Install the bridge
The bridge is a single program, herdr-remote, that runs as you on the computer where your terminals are. It is free and open source under Apache-2.0; its source, protocol and releases are on GitHub.
Requirements
| Needed | |
|---|---|
| Computer | macOS on Apple silicon or Intel, or Linux on x86-64 or ARM64. It must stay awake while you use the phone. |
| Terminals | Herdr, Orca, or nothing: the plain backend runs its own shells. |
| macOS | Nothing else. Allow incoming connections and local network access when asked. |
| Linux | openssl for the first start, and avahi-utils (avahi-publish) so phones on your Wi-Fi can find the computer. |
| Network | The phone on the same network, on your VPN, or a relay you run. See Reach it from anywhere. |
- ComputermacOS on Apple silicon or Intel, or Linux on x86-64 or ARM64. It must stay awake while you use the phone.
- TerminalsHerdr, Orca, or nothing: the plain backend runs its own shells.
- macOSNothing else. Allow incoming connections and local network access when asked.
- Linux
opensslfor the first start, andavahi-utils(avahi-publish) so phones on your Wi-Fi can find the computer. - NetworkThe phone on the same network, on your VPN, or a relay you run. See Reach it from anywhere.
Install
One command
curl -fsSL https://crow.sg/apps/ai-agent-remote/install.sh | shbrew tap crow-tech-pte-ltd/agent-remote-bridge https://github.com/Crow-Tech-Pte-Ltd/agent-remote-bridgebrew install agent-remote-bridgeBoth put herdr-remote on your path. The script installs to ~/.local/bin without sudo and checks the download against the release’s SHA-256 checksums.
The script is published on crow.sg from install.sh in the bridge repository, and downloads the kits from its GitHub Releases. To read it before running it: curl -fsSL https://crow.sg/apps/ai-agent-remote/install.sh | less
Download a release kit
Every bridge release on GitHub Releases has a ready-to-run kit for each computer. Each zip unpacks to an agent-remote folder holding the single herdr-remote program (no runtime to install), a README and the licences. The release lists SHA-256 checksums in SHA256SUMS.
| Computer | Download |
|---|---|
| Mac with Apple silicon (M1 and later) | agent-remote-bridge-VERSION-macos-arm64.zip |
| Intel Mac | agent-remote-bridge-VERSION-macos-x64.zip |
| Linux x86-64 | agent-remote-bridge-VERSION-linux-x64.zip |
| Linux ARM64 | agent-remote-bridge-VERSION-linux-arm64.zip |
- Mac with Apple silicon (M1 and later)
agent-remote-bridge-VERSION-macos-arm64.zip - Intel Mac
agent-remote-bridge-VERSION-macos-x64.zip - Linux x86-64
agent-remote-bridge-VERSION-linux-x64.zip - Linux ARM64
agent-remote-bridge-VERSION-linux-arm64.zip
cd ~unzip ~/Downloads/agent-remote-bridge-*-macos-*.zip # creates ~/agent-remotecd ~/agent-remotexattr -dr com.apple.quarantine . # macOS blocks downloaded programs otherwise./herdr-remote upcd ~unzip ~/Downloads/agent-remote-bridge-*-linux-*.zip # creates ~/agent-remotecd ~/agent-remote./herdr-remote upContainer image
A multi-architecture image is published at ghcr.io/crow-tech-pte-ltd/agent-remote-bridge. It suits a relay server, or a bridge that runs plain terminals inside the container. A bridge that should drive Herdr or Orca on your own desktop belongs on that computer instead.
docker pull ghcr.io/crow-tech-pte-ltd/agent-remote-bridge:latestIf you keep the kit in ~/agent-remote, run it as ./herdr-remote from that folder, or add the folder to your PATH. The rest of these docs write plain herdr-remote.
First start
herdr-remote upup is the one-step command for a computer on your Wi-Fi. On first run it creates the private state directory ~/.local/share/herdr-remote (folder mode 0700, files 0600) with a self-signed certificate for this computer’s .local name and network addresses, then serves on port 8443, advertises the computer to phones nearby and opens the web console. Next time it reuses the same state, so paired phones reconnect without asking.
| Option | Effect |
|---|---|
--backend herdr|orca|plain | Which terminals to serve. Herdr is the default; the choice is remembered. |
--folder DIR | Plain backend: a folder to open as a workspace (repeatable). Default: your home folder. |
--herdr PATH | Where the herdr program is, if it is not on the bridge’s PATH. |
--port 8443 | Port for phones on first start. |
--name NAME | Name shown on the phone (default: the computer’s name). |
--no-discovery | Don’t advertise or accept nearby pairing; already-paired phones still connect. |
--no-console | Don’t start the local web console. |
--state DIR | Use another private state directory, for example to run a second bridge. |
--backend herdr|orca|plainWhich terminals to serve. Herdr is the default; the choice is remembered.--folder DIRPlain backend: a folder to open as a workspace (repeatable). Default: your home folder.--herdr PATHWhere the herdr program is, if it is not on the bridge’s PATH.--port 8443Port for phones on first start.--name NAMEName shown on the phone (default: the computer’s name).--no-discoveryDon’t advertise or accept nearby pairing; already-paired phones still connect.--no-consoleDon’t start the local web console.--state DIRUse another private state directory, for example to run a second bridge.
Prefer explicit settings? herdr-remote init then herdr-remote serve gives you full control over the address, listener and certificate names; see the CLI reference.
Keep it running
The bridge serves phones only while it runs. The simplest way is a Herdr tab. To start it with your login instead:
Linux: systemd user service
The Linux kit includes herdr-remote.service, which runs ~/agent-remote/herdr-remote up. Edit ExecStart if you put the kit elsewhere.
mkdir -p ~/.config/systemd/usercp ~/agent-remote/herdr-remote.service ~/.config/systemd/user/systemctl --user enable --now herdr-remotejournalctl --user -u herdr-remote -f # follow its logTo keep a user service running after you log out, enable lingering once with loginctl enable-linger "$USER".
macOS: LaunchAgent
The bridge repository has a LaunchAgent template, dev.herdr.remote.plist.example. Replace the paths with your kit and state folder, save it as ~/Library/LaunchAgents/dev.herdr.remote.plist, then:
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/dev.herdr.remote.plistA bridge started by a service never opens a browser. Run herdr-remote console for a one-time console link. Keep the Mac from sleeping (System Settings → Battery or Energy) if you want to reach it away from the desk.
Update
Stop the bridge, replace the herdr-remote program with the one from the new kit (or run brew upgrade agent-remote-bridge), and start it again. Your state directory, certificate and paired phones stay as they are. Phone features that need a newer bridge simply stay hidden until you update it.
Uninstall
systemctl --user disable --now herdr-remote # if you installed the Linux servicerm -rf ~/agent-remote # the programrm -rf ~/.local/share/herdr-remote # its state: certificate and paired phonesRemoving the state directory unpairs every phone. On each phone, swipe the computer in Connections and choose Forget to remove its saved credential too.
Run from source
With Bun 1.3.9 or later and OpenSSL installed:
git clone https://github.com/Crow-Tech-Pte-Ltd/agent-remote-bridge.gitcd agent-remote-bridge/serverbun install --frozen-lockfilebun src/cli.ts upbun build src/cli.ts --compile --outfile herdr-remote makes the same single-file program the kits contain.