Skip to content

berth

Every coding agent gets its own berth: an isolated container inside a hardened VM on macOS. Claude Code and Codex work free inside — SSH, credentials, and Docker stay ashore until you opt in.

Get started Quickstart GitHub

brew tap 0x666c6f/tap && brew install berth && berth setup
macOS hostberth CLI · TUI · app
apple container VMhardened · home-mount=none
claude · fix-ciworking
codex · review-prneeds you
claude · auditdone
berth free — berth spawn
read-only rootfscap-drop ALLown network

01 The loop

Spawn an agent. Public repos need no flags; add --ssh for private ones.

berth spawn claude --ssh \
  --repo git@github.com:org/api.git \
  --prompt "Fix the failing CI tests"

Watch it work — steer when needed. Agents run in tmux inside their container; you never have to babysit a window.

berth status --latest     # blocked / working / done / idle
berth peek --latest       # snapshot the live terminal
berth steer --latest "Keep the fix narrow, add one regression test"

Review and ship. Inspect the diff, run a review pass, open the PR.

berth diff --latest
berth review --latest
berth pr --latest --title "fix: stabilize CI"

02 The desktop app

Berth ships a native macOS app for orchestrating agents: a live sidebar with agent states (working / needs-you / review / failed), embedded terminals attached to each container's tmux session, diff review, a spawn form, timeline and cost views, a ⌘K command palette, and native notifications.

Berth desktop app — sidebar with running agents and an embedded terminal attached to a sandboxed container
Berth.app — two sandboxed agents; embedded terminal attached to the container's tmux session

Everything the app does shells out to the same berth CLI, so the app, the TUI, and your terminal can drive the same agents interchangeably. Desktop app guide →

03 Explore