ScreenGuard enforces daily limits and weekly schedules on the Linux machines your family uses. When time runs out it locks the session โ not a dialog box a child can dismiss. Run it entirely on your own hardware.
One server holds the rules. An agent on each managed machine enforces them, and keeps enforcing them if the network drops.
Daily time budgets and weekly hour windows, set per user profile rather than per machine.
Locks every graphical session when the budget runs out. Optionally keeps apps and unsaved work running behind the lock screen.
Desktop notifications at 15, 10, 5 and 1 minute. You can also send an arbitrary message to any managed user's desktop.
Grant or remove minutes on the fly, with an optional reason shown to the user.
Per-profile blocked-domain lists, enforced on the managed machine.
Agents find the server over mDNS on the local network. No addresses to type in.
No runtime dependencies, no interpreter, no container required. x86_64 and aarch64.
Manage profiles, devices, schedules and usage from a browser โ or from the Android app.
Two pieces over one persistent WebSocket. Everything stays on hardware you control.
One machine on your network. Stores profiles, schedules and usage; serves the web UI and REST API. Needs no desktop.
Runs on each managed machine. Reports active time, locks sessions, shows warnings โ and keeps enforcing the last known rules while offline.
Because the agent caches its configuration, pulling the network cable does not buy extra screen time.
Two ways to run it. The pieces are the same either way โ a server that holds the rules and an agent on each managed machine. The only real difference is who runs the server.
Your server, your data, no account. Works entirely on your LAN.
Any Linux box with systemd โ a spare mini PC, a VM, a home server. No desktop needed. Choose Server when prompted.
Open http://<server-ip>:5000 and set a username and password. This is the first-run setup, done once.
Same command, choose Agent. It finds the server over mDNS, or you can give it a fixed URL.
New agents appear as pending until you approve them. Approve, link its Linux users to a profile, then set that profile's limits and schedule.
No server to run. Create an account, point agents at it, done.
Sign up with an email and password. You will need that email in the next step โ it is what identifies your account to the agents.
Already have one? Log in.
That one flag is the only difference from a self-hosted install.
The machine shows up as pending in your account and does nothing until you approve it. From there it works exactly as above.
Prefer containers for the self-hosted server? There is a docker-compose.yml with
SQLite or Postgres โ see the
README.
Manage profiles, devices, schedules and daily limits from your phone. It talks to the same REST API as the web UI, so there is nothing extra to set up on the server.
Download screenguard-android-<version>.apk from the latest mobile
release and install it โ you will need to enable Install unknown apps in Android
settings first. There is no iOS app.