Run Claude Code, Copilot, Codex, and opencode side by side — in one window, with a live view of what every agent is doing.
curl -fsSL https://raw.githubusercontent.com/RizRiyz/bohay/main/install.sh | sh
or brew install RizRiyz/bohay/bohay · cargo install bohay ·
Windows & more
…and you're alt-tabbing between terminal windows trying to keep up.
bohay puts them in one window with a live status sidebar — blocked, working, done — and pings you the moment one needs you.
Every agent's state at a glance — blocked · working · done · idle — with silent desktop notifications.
Close the terminal; nothing stops. Reattach and every pane and layout is exactly where you left it.
After a restart, each agent's own conversation comes back automatically. No flags to remember.
A task board runs many agents on one repo — isolated worktrees, path leases, quality + merge gates.
Commits, branches, PRs, issues, and PR detail with checks — merge or approve without leaving.
A session on another machine, driven from your laptop. ~22 bytes per keystroke; no port forwarding.
Add tasks with dependencies to the ◇ orch board. Each
started task gets an isolated git worktree and its own
pane; path leases stop overlapping edits from even
being assigned; a quality gate (your test command)
must pass before a task counts as done; and finished branches merge
through a dedicated worktree — your checkout is never
touched.
Live status for all of them, zero setup. Highlighted agents also get session resume + precise event hooks. Full matrix →
bohay-notch mirrors every agent into a native panel that drops from the MacBook notch — model, project, running cost, and state. Approve a blocked agent right from the notch; click one to jump to its pane.
brew install --cask --no-quarantine RizRiyz/bohay/bohay-notch
$ bohay pane run 7 cargo test # run in pane 7 $ bohay wait output 7 --match ok # block until it appears $ bohay agent list # every agent, everywhere $ bohay events # live status stream (JSON)
Every UI action is a command over a local socket — and every pane knows its own id, so agents can split, run, and wait on each other. Scripting guide →