Run Herdr agents on a remote machine
An always-on SSH machine for Herdr, with agents ready and no API keys.
Shelley handles the setup. About 5 minutes.
Prefer a terminal?
curl -fsSL https://exe.dev/deploy/herdr/prompt.txt | ssh exe.dev new --prompt=/dev/stdinHerdr puts your coding agents in one window and tells you which one needs you. Its terminals live in a small runtime, herdr-core, not in the window, and any machine you can reach over SSH can join the sidebar. Make that machine an exe.dev VM and the agents keep working when your laptop sleeps: the VM is always on, its disk is persistent, and SSH works from the moment it exists.
The VM comes with Claude Code, Codex, Pi and OpenCode. Here they use exe.dev's LLM integration: no API keys on the VM, and model usage billed to your exe.dev account.
What you get#
- herdr-core (
hc) and Herdr TUI installed on the VM, so Herdr on your computer can add it as a machine - Claude Code, Codex, Pi and OpenCode using exe.dev's LLM integration, with no API key to paste
- Herdr's status integrations for those four agents
- A Git project at
~/project - A Claude Code run through
hcthat answersOK
What's running, and where
ssh my-herdr.exe.xyz
how Herdr reaches the VM, and your terminal
Deploy with Shelley#
Click Deploy and Shelley will set up Herdr on a new VM, then check that it works. No config-file wrangling required.
Prefer a terminal?
curl -fsSL \
https://exe.dev/deploy/herdr/prompt.txt \
| ssh exe.dev new --prompt=/dev/stdinWhat Shelley is told
Set up Herdr on this VM by following the exe.dev recipe at https://exe.dev/deploy/herdr.md from top to bottom.
The recipe's example VM name is my-herdr. This VM's name is the output of `hostname`: use it wherever the recipe writes my-herdr. Skip the step that creates the VM; you are on it.
You are done when all of these are true. Check each one yourself:
- herdr-core (`hc`) and Herdr TUI installed on the VM, so Herdr on your computer can add it as a machine
- Claude Code, Codex, Pi and OpenCode using exe.dev's LLM integration, with no API key to paste
- Herdr's status integrations for those four agents
- A Git project at `~/project`
- A Claude Code run through `hc` that answers `OK`
Run the VM-side commands in "Set up the VM" only; skip creating the VM.
If `exeuntu configure` reports an existing user config, leave it alone.
If `~/.config/opencode/opencode.json` already exists, add the `model`
and `providers` settings to it instead of replacing it. Do not start
interactive agents or `herdr`. Verify with the checks at the end of that
section: both versions print, `herdr integration status` lists claude,
codex, pi and opencode as `current`, and the `hc run` check prints `OK`.
Skip the later sections and the FAQ. Finish by telling the owner to add
`<this VM's name>.exe.xyz` in the Herdr app ("Add it to Herdr"), or to run
`ssh -t <this VM's name>.exe.xyz herdr` for Herdr TUI.
Finish with the URLs I should open.
Also at /deploy/herdr/prompt.txt. The recipe it follows is /deploy/herdr.md.
Set up the VM#
On your computer, create a VM and connect once, which also saves its host key for Herdr. Pick any free name; if you've already clicked Deploy or have a VM, skip the first command and use its name:
ssh exe.dev new --name=my-herdr
ssh my-herdr.exe.xyz
On the VM, connect the agents to the LLM integration. OpenCode gets its latest release first:
exeuntu configure claude
exeuntu configure codex
sudo exeuntu update opencode
mkdir -p ~/.config/opencode
cat > ~/.config/opencode/opencode.json <<'EOF'
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-5-5",
"providers": {
"anthropic": { "settings": { "baseURL": "https://llm.int.exe.xyz/anthropic/v1" } },
"openai": { "settings": { "baseURL": "https://llm.int.exe.xyz/openai/v1" } },
"fireworks-ai": { "settings": { "baseURL": "https://llm.int.exe.xyz/fireworks/inference/v1" } }
}
}
EOF
Pi needs nothing: the first time it starts, choose Use exe.dev LLM integration.
Still on the VM, install herdr-core and Herdr TUI with their official
installers. Both put a single binary in ~/.local/bin; the links make
them work in one-off SSH commands too, whose PATH leaves that folder
out. Then install Herdr TUI's status integrations and make a project, a Git
repository so you can review and undo what the agents change:
curl -fsSL https://releases.herdr.dev/core/install.sh | sh
curl -fsSL https://herdr.dev/install.sh | sh
sudo ln -sf ~/.local/bin/herdr-core /usr/local/bin/hc
sudo ln -sf ~/.local/bin/herdr /usr/local/bin/herdr
for agent in claude codex pi opencode; do herdr integration install $agent; done
git init ~/project
Check it. Both versions print, the four integrations say current, and
Claude Code, run in an hc terminal, answers OK:
hc --version && herdr --version
herdr integration status | grep -E '^(claude|codex|pi|opencode):'
cd ~/project && hc run -- claude -p --model haiku "Reply with exactly: OK"
Add it to Herdr#
On your computer, install the Herdr app if you
haven't. Open Add machine from the sidebar (or Settings →
Machines), type my-herdr.exe.xyz, and add it. It joins the sidebar as
my-herdr. herdr-core is already on the VM, so there is nothing to
install; if Herdr asks anyway, let it copy its own build over.
Open a space on my-herdr in ~/project and start an agent from the +
menu. The first run of each agent asks a question or two: Claude Code for
a theme and whether you trust the folder, Codex whether you trust it, and
Pi whether to use exe.dev's LLM integration. Then give it a task, such as:
Write index.html: a one-page site for a very opinionated cat. Keep it short.
The agent runs on the VM, and the sidebar shows when it's working, done, or waiting for you; all four agents report their status to Herdr. Close the window or the laptop, and it carries on.
The same works from a terminal on your computer with hc, which the app
installs:
hc machine add my-herdr.exe.xyz
hc run --bg --on my-herdr --cwd project --name cat claude
hc attach my-herdr/cat
Ctrl+\ detaches and leaves the agent running; hc ls lists the VM's
terminals beside your own.
Prefer Herdr TUI?#
Herdr TUI, the original terminal app, runs on the same VM. Start it there, like tmux, from any SSH client, including one on your phone:
ssh -t my-herdr.exe.xyz herdr
ctrl+b q detaches; the panes keep running. With Herdr TUI on your
computer, you can instead attach with your local keys and theme, or keep
the VM in the sidebar beside your local work:
herdr --remote my-herdr.exe.xyz
herdr machine add my-herdr.exe.xyz --label my-herdr
Herdr TUI and the app keep separate agents: what you start in one doesn't show up in the other.
What keeps running#
- Laptop closed, window quit, Wi-Fi gone: everything on the VM keeps running. Herdr reconnects on its own when your computer comes back.
- The VM restarts: running programs stop; your files don't. When Herdr
reconnects, herdr-core brings back terminals you marked to keep
(
hc keep <terminal>, orhc run --keep) as fresh shells in the same folders. Herdr TUI restores its layout when you reattach and resumes the Claude Code, Codex, Pi and OpenCode conversations that were open. - Updates:
hc updateandherdr updateleave running terminals alone.
Make yourself at home#
- Bring your code: connect a GitHub repo
and clone it with
git clone https://github.int.exe.xyz/<owner>/<repo>.git. The VM pushes and pulls without a token or SSH key on it. - Preview what it builds: ask the agent to serve the app on
0.0.0.0:8000, then openhttps://my-herdr.exe.xyz/. It's private until you share it. - Shelley is there too: exe.dev's own agent, at
https://my-herdr.shelley.exe.xyz/, can start agents withhc(ask it to readhc --skillfirst), and they appear in your Herdr sidebar.
Back up and restore#
Commit and push your code; that's the copy that matters most. For a copy of the whole VM, agents' histories included, run this on your computer (choose a free backup name):
ssh exe.dev cp my-herdr my-herdr-backup
To use the copy, add my-herdr-backup.exe.xyz to Herdr as another machine.
Update#
On the VM:
hc update
herdr update
sudo exeuntu update claude
sudo exeuntu update codex
sudo exeuntu update opencode
exeuntu update pi
The Herdr app updates itself on your computer. Versions don't have to match: the app and the VM's herdr-core work out what they can do together.
Troubleshooting#
- The machine shows Attention or won't connect. Run
ssh my-herdr.exe.xyzon your computer first: Herdr needs a login without a password prompt, and it can't accept a new host key for you. Thenhc machine lsshows the state, andhc machine login my-herdrreconnects. For Herdr TUI, useherdr machine status. - The connection closes at once. Something prints text in a
non-interactive login; Herdr's connection carries a byte protocol. Check
that
ssh my-herdr.exe.xyz trueprints nothing. - An agent doesn't answer. On the VM,
claude -p "Reply with exactly: OK"andcodex exec "Reply with exactly: OK"show whether the agents work on their own; rerunexeuntu configure claudeorexeuntu configure codex, thenherdr integration install codex, if not. - An agent has no status in the sidebar. Update it (see Update); older
versions don't report their status. In Herdr TUI, check
herdr integration status. - Logs: herdr-core's are
core.logandholder.login~/.local/state/herdr-core/default/; Herdr TUI's is~/.config/herdr/herdr-server.log.
For everything else, see Herdr's machine docs and the Herdr TUI docs.
Frequently asked questions#
Does the Herdr app run on the VM?
No. The app is a desktop program for macOS, Linux and Windows; it runs on your computer and adds the VM as a machine over SSH. The VM runs herdr-core, which owns the terminals, so it needs no desktop.
Herdr app or Herdr TUI?
Either; this VM has both. The app is built on herdr-core; Herdr TUI is the original terminal app, with its own server. They don't share agents: what you start in one doesn't show up in the other. Herdr TUI also works from a phone's SSH app.
Can I use my own Claude or ChatGPT subscription?
Yes. On the VM, run claude auth login or codex login after removing what exeuntu configure added: apiKeyHelper and env.ANTHROPIC_BASE_URL in ~/.claude/settings.json, and the exe-llm provider in ~/.codex/config.toml. Keep the hooks entries Herdr added.
How much does it cost?
Herdr is free and open source (Apache-2.0). You pay for the VM as part of your exe.dev plan, and model usage through the LLM integration is billed to your exe.dev account. exe.dev keeps a list of models and prices.
Does anything listen on the internet?
No. herdr-core and Herdr TUI listen on Unix sockets on the VM, and Herdr reaches them through SSH with your exe.dev key. Adding the VM to Herdr gives that computer the same access as a shell on the VM.
Updated Oct 31, 2026 · tested end to end Oct 31, 2026 · Markdown · manifest.json · Something wrong? Tell us