AI summary
Turn a spare Android phone into a remote camera and control rig on your own private Tailscale network. Streams MJPEG video, runs scripted screen automation via AccessibilityService, and provides wireless adb/scrcpy access without root, Termux, or SSH. No AndroidX, no trackers, no ads.
Generated by AI. May contain inaccuracies.
About this app
Turn a spare Android phone into a remote camera and control rig on your own private Tailscale network, without root.
A single pure-framework Android app (no AndroidX, no trackers, no ads), published as FOSS. App ID: co.xplat.husk. Publisher: xplat.
Features
Camera streaming
- MJPEG stream viewable in a browser or usable as a webcam in a meeting through a PC virtual camera.
Automation
- An AccessibilityService-based automation engine for hands-free, scripted on-screen actions on any display, including Samsung DeX.
Remote control and recovery
- Wireless Debugging recovery in-app after a reboot. - App-native adb bridge (Tailscale IP on port 15557) so a PC can mirror and control the phone with scrcpy, with no Termux, no SSH, and no socat. - One-time pairing via the in-app /pair endpoint. - DeX auto-reconnect toggle, shown only on DeX-capable phones. - Boot persistence: the app starts again after a reboot.
Network and privacy
- Network services listen on all interfaces but are gated by a source-IP allowlist: loopback, RFC1918 and LAN addresses, and Tailscale 100.64.0.0/10 peers. An optional token adds a second layer. - Nothing leaves the device except two things you turn on or request yourself: the motion push to your own ntfy topic, and the update check, which reads version information and downloads the APK only when you start an update. - Remote access can be restricted further with a Tailscale ACL.
Interface
- One screen with status, a few toggles, one-tap deep links to every required system setting, and a link to the PC companion. - Bilingual: Danish on Danish devices, English elsewhere.
PC companion
A PowerShell setup script for a fresh Windows 11 that bootstraps scrcpy, pairs the PC hands-free via /pair, and creates desktop shortcuts.
HTTP API
Port 8090, loopback and Tailscale, with optional token: - /healthz, /snapshot, /stream, /wd, /pair, /flags, /set, / viewer - adb bridge on port 15557 - automation RPC on loopback port 8127
Permissions
Internet for local HTTP and the adb bridge on loopback and Tailscale only; camera; foreground service with camera; receive boot completed; wake lock; post notifications; request ignore battery optimisations; and the AccessibilityService binding.
Security
- Port 8090 binds all interfaces but is gated by a source-IP allowlist and an optional shared token. When no token is set, the IP allowlist is the only gate. - Port 8127 binds only 127.0.0.1, so it is unreachable from other devices. It has no app-level authentication: any other app on the same phone with internet permission can reach it and tap, swipe, or read all displays. Accepted on a single-purpose rig with a controlled app set. - Port 15557 requires one-time pairing via /pair and otherwise follows the same source-IP allowlist as port 8090.
Requirements
- Android 8.0 (API 26) or newer - No root required - Tailscale on the device and on the peer you want to use
Disclaimer
Husk is an independent, open-source project published by xplat. It is not affiliated with Tailscale, scrcpy, ntfy, or any third-party service. All trademarks belong to their respective owners.
License
GNU General Public License v3.0 or later
What's new
The update button now states in the app that the update comes directly from the developer, not F-Droid: a permanent note under the button, plus a confirmation dialog naming the source before anything is downloaded. - Fixed the "Tailscale IP" label: carriers also hand out 100.64.0.0/10 addresses, so on mobile data the carrier's address was shown as Tailscale's. A CGNAT address is now only labelled Tailscale if the same interface also carries an fd7a:115c:a1e0::/48 address. - Server responses, the control pages, and the motion push now follow the device language, with English as the default. Notification channel names are also localized.
About this version
- Version
- 1.0 (51)
- Size
- 88.71 KB
- Requires Android
- 8.0
- Target SDK
- 26
- Architecture
- universal
- Downloads
- 10
- Updated
- Sep 17, 2026
- Package
- co.xplat.husk
Similar apps
Ratings & reviews
- 50
- 40
- 30
- 20
- 10