Husk

Verified safeOpen sourceExclusive
No reviews reviews
10
downloads
8.0
android

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

v1.0Sep 17, 2026

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

0 ratings
  • 5
    0
  • 4
    0
  • 3
    0
  • 2
    0
  • 1
    0

Write a review

Tap a star to rate this app