KidGuard
Android 8+ · free · open source

Manage your child's Android phone from a browser

One APK file, no account, no server to set up. KidGuard runs on your child's phone as Device Owner (the Android management role, like a company-managed phone). Rules run on the phone itself, even when it is offline.

Download it on your child's phone, then follow one of the 4 install methods. Nothing is locked until setup is finished.

  • Every change can be undone
  • The parent page runs in a browser
  • No data goes to the cloud unless you turn it on
Parent page: app list and time limits
Parent page: time left today and the child's requests
Parent page: location history on a map
Features

Enough for everyday use

Parents change the rules on the web page, and the child's phone applies them right away.

⏱️

Daily time limit

One limit for every day, or a separate one for each weekday. When time is up, every app (except "Luôn cho phép", Always allow) is locked until midnight. Add 15 / 30 / 60 minutes for today.

🙋

Child asks for more time

The child taps a button on the phone (15 / 30 / 60 minutes, with a reason), and the parent chooses Approve or Deny.

📦

Per-app control

Normal, N minutes per day, Blocked or Always allowed. Select several apps to change them at once. New apps can stay locked until a parent approves them.

🌙

Bedtime and school hours

A bedtime for each day, plus extra time windows on chosen days (school hours Monday to Friday). Windows may cross midnight. There is a Pause now button: 30 minutes, 1 hour, until 6 am.

📍

Location

Locate now, force location on (the child cannot turn it off), 7-day history on an OpenStreetMap map, with stops.

📊

Usage history

7 days of screen time, and the most used apps each day.

👀

Screen view and control

Watch your child's screen live on the page (Android 11+, about 3 frames per second), tap, swipe, type. The child sees the message "Phụ huynh đang xem màn hình" (A parent is watching the screen).

🛡️

Hard to bypass

Blocks uninstalling apps, force stop, factory reset from Settings, Safe Mode, adding users, changing the clock, airplane mode. A watchdog restarts the app automatically. Optional: safe DNS filter, block app installs, block USB debugging.

🔒

Quick commands

Lock the screen, ring the phone, show a full-screen message, reboot the phone.

Remove everything at any time. Parent page, Cài đặt (Settings), Gỡ quyền quản lý (Release): every app is unlocked, every restriction is lifted, then uninstall KidGuard like a normal app. Locked apps use Android's own suspend mechanism: their icon turns gray.
Interface

The parent page and the child's phone

The parent page is plain HTML served by the child's own phone (the UI is in Vietnamese for now).

Today screen
Today: time left, requests, quick actions
Apps screen
Apps: limit, block, approve new apps
Location screen
Where your child has been, on a map
The app on the child's phone
On the child's phone
Install

4 ways to install, pick what suits you

Android only lets an app become Device Owner while the phone has no accounts (Google, Samsung, Xiaomi...). Remove the accounts from your child's phone first, install, then sign back in, and everything comes back.

Android 11+, with Wi-Fi

📱 On the phone itself Easiest

  1. Install the APK, open KidGuard, tap Tự cài không cần máy tính (set up without a computer).
  2. Turn on Developer options, Wireless debugging, choose Pair device with pairing code.
  3. Type the 6 digits into KidGuard's notification. It does the rest and turns Wireless debugging off when done.
New phone or just factory reset

🔳 Scan a QR code

  1. On the welcome screen, tap the empty area 6 times.
  2. Scan the QR code.
  3. The phone downloads KidGuard over Wi-Fi and installs it. Open it and go through the short checklist.
Chrome or Edge on a computer

🌐 Browser and USB cable

  1. Turn on USB debugging on your child's phone and plug the cable into the computer.
  2. Open the install page and click Connect.
  3. No need to install adb.
macOS, Linux, Windows

⌨️ Command line

Run ./setup.sh (downloads adb if missing, add -y to skip the questions) or on Windows: powershell -ExecutionPolicy Bypass -File setup.ps1. These files are in the source repository.

After installing

The child's phone shows a 6-digit code. On the parent's phone (same Wi-Fi) open http://<phone IP>:8770, enter the code, then go to Cài đặt (Settings) and set a parent PIN (without a PIN the phone refuses to pair any more browsers).

Xiaomi, Oppo, Vivo, Samsung

On your child's phone tap Cài đặt pin / tự khởi động (battery / autostart settings) and let KidGuard run in the background, otherwise the manufacturer may kill it.

Away from home

Remote control: Tailscale or Cloudflare Worker

At home the parent page connects directly over Wi-Fi. Away from home, pick one of two options (or use both).

Tailscale Recommended

A private network. The page talks straight to the phone, so responses are instant. Nothing to deploy.

  1. Make a free account at tailscale.com, go to Settings, Keys, Generate auth key: turn Reusable on, Ephemeral off.
  2. In the parent page (on home Wi-Fi): Cài đặt, Điều khiển từ xa qua Tailscale (Settings, remote control via Tailscale), paste the key, tap Bật (On).
  3. Your child's phone downloads the official Tailscale app (SHA-256 checked), installs it, joins the network and hides the app. About a minute.
  4. On the parent's phone install Tailscale, sign in with the same account, and open the address http://100.x.y.z:8770 shown on the card.

The key is only accepted on home Wi-Fi and stays on the child's phone. The child cannot turn off the VPN or uninstall Tailscale. The child will see a key icon in the status bar (Android always shows it when a VPN is active).

Cloudflare Worker (advanced)

A small Worker (free plan) relays commands, state and the live screen. Frames stay in the Worker's memory only and are not stored. Open it in any browser, no app needed on the parent's phone.

  1. Deploy the Worker (needs Node): cd worker && npm install && npx wrangler login && npx wrangler deploy
  2. In the parent page (on home Wi-Fi): Cài đặt, Điều khiển khi khác mạng (Settings, control from another network), paste the Worker address, tap On.
  3. Open the link that appears on the parent's phone.

Commands reach the phone after about 20 seconds (about 60 seconds when the screen is off). The child sees nothing extra.

TailscaleCloudflare Worker
Setuppaste a key, nothing to deploydeploy a Worker (needs Node)
Speedinstant, direct to the phonecommands ~20 s (~60 s with the screen off)
Parent's phoneneeds the Tailscale app (Android / iPhone)any browser
Child seesa key icon in the status barnothing
iPhone / iPad

Plainly: the child's side cannot exist on iOS

Apple does not let third-party apps view the screen, control the device or lock other apps, so an app like KidGuard cannot exist on your child's iPhone or iPad.

If your child uses an iPhone / iPad

Use Apple's built-in, free tools: Screen Time and Family Sharing (limits, downtime, app limits, adult web filter, purchase approval, requests for more time) and Find My for location.

If you (the parent) use an iPhone

That works: your child uses Android and you open the parent page in Safari. At home you only need the same Wi-Fi. Away from home, install Tailscale from the App Store (recommended), or use the Worker, which only needs a browser.

FAQ

Good to know

Can the DNS filter cut off my child's Internet?

The filter uses Android's Private DNS. If the filter's server refuses, or the network has Internet but blocks DNS-over-TLS for 90 seconds, KidGuard falls back to normal DNS for 30 minutes and the parent page says why, so the child does not lose the Internet because of the filter.

Can the child uninstall KidGuard?

Not from Settings. But a factory reset from the hardware keys (recovery mode) still works: KidGuard is then gone and the parent page shows "mất kết nối" (disconnected).

Does it work on older Android?

Android 8 and up. Live screen view and remote control need Android 11+. On Android 8 to 10, the child can force stop KidGuard (it starts again after a reboot). The "on the phone itself" install also needs Android 11+.

Why do some apps show a black screen?

Apps that mark their screen as secure (banking and similar) appear black when viewed remotely.

Is any data sent anywhere?

Not by default: the parent page is served by your child's own phone. Only if you turn on the Cloudflare Worker do commands and state go through your own Worker (screen frames stay in memory, not stored). The Tailscale key does not go through the Worker.

Is it secure?

Each browser pairs once with a 6-digit code shown on the child's phone, and pairing more needs the parent PIN. The PIN is stored as a salted hash and is never sent back to the page. Note: on home Wi-Fi the page runs over plain HTTP (the access code travels in a header), so only use it on a network you trust.

Found a bug or have an idea?

Send it to GitHub Issues. How the parts talk to each other is described in docs/protocol.md.

Ready to try?

Download it, install it on your child's phone, open the parent page. If you change your mind, Gỡ quyền quản lý (Release) and you are done.