For the agent doing the setup. Isbell lets its user reach the agents on their Macs from a browser:
isbell runs a gateway on each Mac, beside herdr, where the agents run.
- Never print, read or repeat the space key. Never put it in a command line.
space initandspace showprint it, so send their output to/dev/null. - Ask the user before installing herdr.
-
uname -smisDarwin arm64. Otherwise stop: the installer is for Macs with Apple silicon; the README says how to build from source. -
Install or upgrade:
curl -fsSL https://isbell.fmap.dev/install.sh | sh. Make sure~/.local/binis on the user'sPATH. -
herdr is installed:
command -v herdrin a login shell. If not, with the user's yes:curl -fsSL https://herdr.dev/install.sh | sh. -
The space: if
isbell space show >/dev/null 2>&1succeeds, there is one already. If not, ask the user whether this is their first Mac:- first Mac:
isbell space init >/dev/null; - another Mac: the user runs
isbell space join <key>themselves.
- first Mac:
-
Gateway service, from the user's login shell, so it finds herdr and the agents:
$SHELL -lc 'isbell gateway install'. -
Optional, if the user runs Claude Code, Codex or pi: with their yes, the hook that lets the board show what each agent is asked and doing, and records each session in
~/.isbell/sessionsso a project's Sessions can resume it after its pane is closed. A machine with an older hook gets this by installing again. Fetch it once:curl -fsSL https://isbell.fmap.dev/agent-hook.sh -o /tmp/agent-hook.sh, then for each agent the user runs:- Claude Code:
sh /tmp/agent-hook.sh install claude. It registers itself in$CLAUDE_CONFIG_DIR/settings.json, else~/.claude/settings.json; for another config directory (a wrapper such as reclaude keeps its own), add--config-dir DIR. Sessions already running take it once restarted. Claude Code deletes a session's transcript aftercleanupPeriodDays(30 by default), and a deleted one cannot be resumed: ask the user whether to raise it in thatsettings.json. - Codex:
sh /tmp/agent-hook.sh install codex, into$CODEX_HOME/hooks.json, else~/.codex/hooks.json. Tell the user that Codex asks to trust the new hooks when it next starts (choose Trust all), and that they report only from Codex started with--no-daemon: Isbell starts it so. A session's chat is read from the agent's own record, so for Codex started by hand in herdr suggestalias codex='codex --no-daemon'in~/.zshrc. Without it, the chat finds the record by the pane's directory and when its Codex started, as long as no other Codex works in that directory. - pi:
sh /tmp/agent-hook.sh install pi. It writes an extension to$PI_CODING_AGENT_DIR/extensions/, else~/.pi/agent/extensions/, which pi loads when it starts: sessions already running take it once restarted. For pi's status on the board, herdr needs its own integration too:herdr integration install pi.
- Claude Code:
-
Check:
isbell gateway statussaysrunning;isbell machine listshows this Maconline.
If either check fails, look at the end of
~/Library/Logs/isbell/gateway.log. -
Tell the user:
- Run
isbell space showin your own terminal and copy the key. - Open https://isbell.fmap.dev and paste it.
- Start agents inside herdr (run
herdr); Isbell sees what runs there. - For another Mac, give its agent this same file.
- Run
isbell gateway uninstall, isbell space leave, then delete ~/.local/bin/isbell. With the agent
hook installed, first sh ~/.isbell/hooks/agent-hook.sh uninstall claude (with the same
--config-dir), … uninstall codex and … uninstall pi for each agent it was installed for, then delete
~/.isbell/hooks, and ~/.isbell/sessions unless the user keeps the sessions' records.