An Android app for herdr

claude has beenwaiting on youfor 11:42

Shepherd puts your herdr agents on your phone. See which ones are stuck, read what they wrote, and tap the answer. Your laptop can stay shut in the bag.

Works with Claude Code Codex Gemini CLI and more

23:14
studio-mac

Agents

4 agents · 1 working · 1 needs you

move your cursor through the field · click the orange one

// the live terminal

It's the actual terminal. Not a summary of it.

The host runs a headless xterm next to herdr and sends only the rows that changed. The app draws them as real text, fitted to your screen.

So you can scroll back through the whole session, pinch to change the size, search, long-press to copy and tap links. When the agent asks something, the answers turn into buttons.

  • esc ↵ tab ↑ ↓ ^CQuick keys along the bottom, for when buttons aren't enough.
  • Type straight into the pane, like you're at the keyboard.
  • tabsHop between herdr tabs. Open a shell, or start an agent in a project or a fresh git worktree.
23:16
Fix flaky login test Working· claude · api
YesYes, allow all edits during this sessionNo, and tell Claude
✻Fix flaky login test ▭ dev server✻Refactor billing
esc↵tab⇧tab↑↓←→^C
Message claude…

// away from home

It tries every road at once.

The pairing QR code carries every address your computer has. The app dials all of them together, keeps whichever answers first, and switches when you change networks. You never pick one.

studio-machost + herdr
Wi-Fi 192.168.1.20
Tailscale 100.101.102.103
Your relay shepherd-relay.you.workers.dev
your phoneShepherd

 

what the relay sees

what your phone sees

 

End-to-end encrypted on every route, relay included: a Noise-style handshake with your computer's key pinned from the QR code, then ChaCha20-Poly1305. The relay is a Cloudflare Worker you deploy to your own account, and the free plan is enough. Tailscale needs no setup at all; the host finds its address on its own.

23:41

// notifications

Or answer without opening it.

When an agent asks a question, your phone buzzes with the question and up to three of its answers as buttons. You get one when it finishes, too.

Notifications go through ntfy, so there's no Firebase and no Google account. A button can only pick an answer the agent offered. It works once, expires after 30 minutes, and does nothing if the agent has already moved on.

// the rest of it

Five screens, give or take.

Activity feed of what agents did Starting an agent, a shell or a worktree Agent list, with the agent that needs input first An agent's live terminal with answer chips, tabs and quick keys Settings with paired computers and app lock
Activity feedWhat your agents did while you were away, and how long each one waited for you.
Several computersPair as many as you like and switch from the top of the agent list.
Manage agentsLong-press one to rename it, rename its workspace, or close it.
App lockAsk for your fingerprint before Shepherd opens.

// setup

Three steps, then it's just your phone.

  1. Start the hostA small Node service that talks to herdr's local socket and only lets in phones you've paired.
    git clone https://github.com/zenodea/shepherd.git && cd shepherd && npm install && npm run host
  2. Get the appBuild the APK in the cloud with a free Expo account, then open the link it prints on your phone.
    npm run build:apk -w @shepherd/mobile
  3. Scan the codeThe pairing code works once and expires after ten minutes, so a photo of it is useless afterwards. Your phone gets its own token.

You'll need herdr 0.9 or newer, Node 22.18 or newer, and an Android phone. Want to look around first? npm run app:demo runs the app against a pretend computer full of pretend agents. Full instructions are in the README.

~/shepherd