Screenshots
Description
Husk turns a spare Android phone into a remote camera and control rig on your own LAN or
Tailscale network, without root.
Features: camera streaming (MJPEG) in a browser, or as a webcam via a PC tool; front or back
camera, switchable over HTTP while the stream runs; an accessibility engine for scripted
on-screen actions; in-app recovery of Wireless Debugging after a reboot; an adb bridge for
scrcpy from a PC; camera or screen motion alerts with a push and a live snapshot; a Samsung
DeX toggle on DeX phones. It starts automatically after a reboot.
Husk has no built-in updater and never checks for, downloads or installs anything on its own.
Update from F-Droid, or install an APK with adb.
Every host Husk can talk to, and what triggers it:
* 0.0.0.0 - it LISTENS, it never connects out: the HTTP control server on 8090 and the adb
bridge on 15557, while the service runs, both behind a source-IP allowlist.
* 127.0.0.1 - loopback only, inside the phone: the accessibility engine on 8127, and the adb
bridge forwarding to the local Wireless Debugging port.
* ntfy.sh - only when motion alerts are enabled and you have set a topic; one push per alert.
The server is configurable - use your own instance.
* xplat.co - project website and PC companion download. The app itself never contacts it;
1.1 removed the updater that read it.
The allowlist admits loopback, private LAN ranges, fc00::/7 and Tailscale's 100.64.0.0/10;
some carriers use that range too, so on mobile data it is wider than your tailnet alone. An
optional token adds a second layer, off by default. Restrict access with a Tailscale ACL.
Husk uses the AccessibilityService API and exposes an adb bridge by design. 100% open source
(GPLv3), AOSP framework APIs only: no trackers, no ads, no proprietary code.
What’s new (1.4)
Set the access token in the app.
New Access token field with Generate, Copy and Save. A PC app can also ask for the token: the phone shows a notification, and you tap Approve (GET /token/request, /token/status; /token/set changes it).
The token is no longer read from a global system setting set with adb. After updating, set the token again in the app. Without a token, anyone on your Tailscale network can control the phone.
Versions
Permissions
What the app asks the system for. Android only grants sensitive access after you confirm it.
- Internet accessSend and receive data over the internet.
- CameraTake photos and videos.
- Foreground serviceKeep running in the background, visible in the status bar.
- FOREGROUND_SERVICE_CAMERA
- FOREGROUND_SERVICE_MEDIA_PROJECTION
- FOREGROUND_SERVICE_SPECIAL_USE
- Run at startupStart automatically after the device is switched on.
- Prevent sleepingKeep the device from going to sleep.
Show 8 more permissions
- NotificationsShow notifications.
- REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
- VibrationControl the vibration alert.
- Network stateCheck whether and how the device is connected.
- System settingsChange system settings.
- Precise locationDetermine the location via GPS.
- Approximate locationDetermine the location via the network.
- MicrophoneRecord audio.
Comments