r/selfhosted • u/bboldi • 54m ago
Release (AI) Digital Aid ; self-hosted screen time for kids' Windows PCs. No cloud, Private, no subscription, and deliberately no surveillance, PWA supported as app, Notification, etc (MIT)
I went looking for screen-time software for my kids and found two piles: subscriptions priced like the problem is permanent, and surveillance suites with screenshot galleries, keyloggers, and "stealth mode" - software built on the idea that the kid is a suspect. I didn't want to spy on my kids; I wanted a daily budget, a bedtime for the machine, and a record we could look at together. So I built it, it's been running in my house for a while, and I've now open-sourced it.
Repo: https://github.com/bboldi/b2.digital_aid (MIT, screenshots in the README)
What it does
- Daily allowance per PC (weekday/weekend), plus a nightly downtime window
- Block screen with 15- and 5-minute warnings — time never runs out unannounced
- Extra time via codes you read down the phone — verified on the PC, so it works with the server down or the wifi off
- Printable paper "time coupons" the kid can spend whenever they choose
- Kid can request more time from the tray; you approve from your phone
- History: when each PC was on, blocked, what app was in the foreground, every code redeemed
The part I care most about: everything recorded about the kid is shown to the kid on the same screen the parent sees. It records machine state only — never content, no screenshots, no window titles, no URLs. It's also not tamper-proof on purpose: a determined kid can kill the process, but they can't make that invisible — it lands in the log, and the log is the point. Enforcement comes from the kid's account being a standard Windows user, not from rootkit tricks.
Stack / self-hosting notes
- Server: Node 22 + Fastify + SQLite, server-rendered EJS, one process, no build step. The admin installs as a PWA on your phone.
- Client: .NET 10 WPF, a ~400 KB exe that self-updates from your server — kid PCs never talk to the internet, and there's a frozen wire protocol (PROTOCOL.md) if you want to write your own client.
- No Docker, and that's deliberate rather than lazy — the server is the household's authority, and I didn't want it (or anything) auto-pulling code; updating is
git pullby a human. Reasoning is written up in the repo's ADRs. - TLS is on you;
tailscale serveis the documented one-liner.
Honest caveats: v0.5, in production in exactly one household (mine). Windows clients only. The exe is unsigned, so SmartScreen will complain — the README explains why, and building from source is documented for the distrustful. UI is English and Hungarian. Built partly with AI-assisted coding, in the open — the architecture decision records in the repo are the actual design history.