Your coding agents, in your pocket. See every agent on every machine, answer the moment one needs you. Android client for herdr, over SSH.
Dart
3
1 commits
updated Oct 6, 2026
Your coding agents, in your pocket. herdr mobile shows every agent on every machine you run herdr on, tells you the moment one needs you, and lets you answer from wherever you are. It's built for a phone on a bad network, with one hand free.

Watch the demo (31 s, real recordings on a Galaxy A51).
I always wanted one app on my phone to run the coding agents on all my machines,
and everything I tried felt half-baked: a Telegram bot here, a mobile terminal like
Moshi there, each solving one piece of the job. So I set out to build the best one,
and optimized it for how it feels in the hand. Some of that went a little far: the
keyboard and the terminal's rendering were tuned on a real phone with automated
measure-and-improve loops (autoresearch.sh, autoresearch-stream.sh), until the
keyboard opened without skipping a single frame.
phone ──SSH──▶ machine A ── one multiplexed channel ──▶ herdr socket
──SSH──▶ machine B ── …
There is no relay, no public port and no account. The phone talks to each machine over
SSH (a key, a password or Tailscale SSH) and keeps one persistent, compressed
channel per machine for every request. That channel runs a tiny script on the host
(python3). When that script can't run or can't find herdr's socket, the app falls back
to herdr remote-api-bridge (herdr ≥ 0.9), then socat, one channel per request,
and tries the script again later. Each machine connects, backs off and reconnects
on its own, so one failing never affects another. docs/ARCHITECTURE.md
lists everything the app runs on your machines.
The app's security rules:
authorized_keys command for the host.Download herdr-mobile-<version>.apk from
Releases, allow installs from
unknown sources, and open it. One APK covers every Android 7.0+ phone (32- and 64-bit
ARM). Check it against SHA256SUMS.
On each machine you need:
socat or python3, and use
the default session unless you set the socket path under Advanced.The user guide walks through setup, answering agents, notifications and what to do when something goes wrong.
cd app && flutter pub get && flutter analyze && flutter test
Flutter ≥ 3.47 is required. docs/DEVELOPMENT.md covers setup and release signing. AGENTS.md holds the principles every change is judged by. The design system and each subsystem's details are in docs/. Contributions are welcome; CONTRIBUTING.md says how, and what you agree to when you send one.
Copyright © 2026 Tuan Nguyen. herdr mobile is free software under the GNU General Public License v3.0 (GPL-3.0-only): you may use, study, change and share it, and anything you distribute that is built from it must be shared under the same license, with its source.
Your coding agents, in your pocket. See every agent on every machine, answer the moment one needs you. Android client for herdr, over SSH.
Dart
3
1 commits
updated Oct 6, 2026
Your coding agents, in your pocket. herdr mobile shows every agent on every machine you run herdr on, tells you the moment one needs you, and lets you answer from wherever you are. It's built for a phone on a bad network, with one hand free.

Watch the demo (31 s, real recordings on a Galaxy A51).
I always wanted one app on my phone to run the coding agents on all my machines,
and everything I tried felt half-baked: a Telegram bot here, a mobile terminal like
Moshi there, each solving one piece of the job. So I set out to build the best one,
and optimized it for how it feels in the hand. Some of that went a little far: the
keyboard and the terminal's rendering were tuned on a real phone with automated
measure-and-improve loops (autoresearch.sh, autoresearch-stream.sh), until the
keyboard opened without skipping a single frame.
phone ──SSH──▶ machine A ── one multiplexed channel ──▶ herdr socket
──SSH──▶ machine B ── …
There is no relay, no public port and no account. The phone talks to each machine over
SSH (a key, a password or Tailscale SSH) and keeps one persistent, compressed
channel per machine for every request. That channel runs a tiny script on the host
(python3). When that script can't run or can't find herdr's socket, the app falls back
to herdr remote-api-bridge (herdr ≥ 0.9), then socat, one channel per request,
and tries the script again later. Each machine connects, backs off and reconnects
on its own, so one failing never affects another. docs/ARCHITECTURE.md
lists everything the app runs on your machines.
The app's security rules:
authorized_keys command for the host.Download herdr-mobile-<version>.apk from
Releases, allow installs from
unknown sources, and open it. One APK covers every Android 7.0+ phone (32- and 64-bit
ARM). Check it against SHA256SUMS.
On each machine you need:
socat or python3, and use
the default session unless you set the socket path under Advanced.The user guide walks through setup, answering agents, notifications and what to do when something goes wrong.
cd app && flutter pub get && flutter analyze && flutter test
Flutter ≥ 3.47 is required. docs/DEVELOPMENT.md covers setup and release signing. AGENTS.md holds the principles every change is judged by. The design system and each subsystem's details are in docs/. Contributions are welcome; CONTRIBUTING.md says how, and what you agree to when you send one.
Copyright © 2026 Tuan Nguyen. herdr mobile is free software under the GNU General Public License v3.0 (GPL-3.0-only): you may use, study, change and share it, and anything you distribute that is built from it must be shared under the same license, with its source.