Free and open source ยท AGPL-3.0

Screen-time limits that actually hold on Linux.

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.

What it does

One server holds the rules. An agent on each managed machine enforces them, and keeps enforcing them if the network drops.

โฑ๏ธ

Limits and schedules

Daily time budgets and weekly hour windows, set per user profile rather than per machine.

๐Ÿ”’

Hard enforcement

Locks every graphical session when the budget runs out. Optionally keeps apps and unsaved work running behind the lock screen.

๐Ÿ””

Warnings before lockout

Desktop notifications at 15, 10, 5 and 1 minute. You can also send an arbitrary message to any managed user's desktop.

โž•

Time adjustments

Grant or remove minutes on the fly, with an optional reason shown to the user.

๐ŸŒ

Web content filtering

Per-profile blocked-domain lists, enforced on the managed machine.

๐Ÿ“ก

Zero-config discovery

Agents find the server over mDNS on the local network. No addresses to type in.

๐Ÿ“ฆ

Static binaries

No runtime dependencies, no interpreter, no container required. x86_64 and aarch64.

๐Ÿ–ฅ๏ธ

Web UI and REST API

Manage profiles, devices, schedules and usage from a browser โ€” or from the Android app.

How it works

Two pieces over one persistent WebSocket. Everything stays on hardware you control.

Server
Holds the rules

One machine on your network. Stores profiles, schedules and usage; serves the web UI and REST API. Needs no desktop.

Agent
Enforces them

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.

Getting started

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.

Self-hosted

Recommended

Your server, your data, no account. Works entirely on your LAN.

  1. Install the server

    Any Linux box with systemd โ€” a spare mini PC, a VM, a home server. No desktop needed. Choose Server when prompted.

    curl -fsSL https://github.com/adambie/screenguard/releases/latest/download/install.sh | sudo bash
  2. Create your admin account

    Open http://<server-ip>:5000 and set a username and password. This is the first-run setup, done once.

  3. Install an agent on each machine

    Same command, choose Agent. It finds the server over mDNS, or you can give it a fixed URL.

    curl -fsSL https://github.com/adambie/screenguard/releases/latest/download/install.sh | sudo bash
  4. Approve it, then set the rules

    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.

Hosted cloud

Experimental

No server to run. Create an account, point agents at it, done.

  1. Create your account first

    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.

  2. Install an agent with your email

    That one flag is the only difference from a self-hosted install.

    curl -fsSL https://github.com/adambie/screenguard/releases/latest/download/install.sh \ | sudo bash -s -- --cloud-account=you@example.com
  3. Approve it, then set the rules

    The machine shows up as pending in your account and does nothing until you approve it. From there it works exactly as above.

Before you rely on it.
  • Experimental and unsupported โ€” the service and this flow may change or be withdrawn.
  • No backups, no uptime guarantee, no account recovery.
  • Sign-up is open, with no email verification.
  • A mistyped address gives no error; the agent just stays pending forever. That is deliberate โ€” it stops the service being used to probe which emails have accounts.

Prefer containers for the self-hosted server? There is a docker-compose.yml with SQLite or Postgres โ€” see the README.

Android app

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.

Android only, installed by sideloading.

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.