KinPilot is consent-first remote assistance for Android 12+. It uses a tiny, stateless rendezvous service only to introduce two devices; screen video, controls, and optional two-way voice then travel directly over encrypted WebRTC.
android/parent: explicit approval, Android screen sharing, and accessibility-based controls.android/helper: native Android remote console.android/protocol: shared control protocol and rendezvous client.web: browser helper console hosted on Netlify.server: in-memory HTTPS rendezvous service hosted on Render.
There are no accounts or database. A random one-time code expires after 10 minutes, permits one helper, and exists only in server memory. An accepted session expires after one hour. Render restarts erase all rooms. Every session requires the parent to accept the named helper and approve Android's system screen-capture dialog.
Secure windows, password fields, biometrics, and blocked system surfaces are not bypassed. The server never receives screen pixels, control commands, or typed text. V1 uses public STUN only, so connections behind restrictive carrier or corporate NAT may fail rather than fall back to a paid relay.
- Run
npm install,npm test, andnpm run buildfrom the repository root. - Start signaling with
npm run dev -w server. - Copy
web/.env.exampletoweb/.env.local, setVITE_SIGNALING_URL=ws://localhost:8787/ws, and runnpm run dev -w web. - Open
android/in Android Studio with JDK 17 and Android SDK 35 to build the parent and helper APKs.
See docs/DEPLOYMENT.md for Render, Netlify, and Android release steps.