Husk

Husk

Turn a spare Android phone into a remote camera and control rig

xplat Camera Remote Access

Screenshots

Screenshot of Husk

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

Version Date Size Requires Android Download
1.4 current
83a1ddf7bd456c17…
2026-09-26 93 KB API 26
1.3
39c95f9f857eca87…
2026-09-25 85 KB API 26
1.2
54b5e2d00f5e9d4c…
2026-09-21 85 KB API 26

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