atrium — control room
$ATRIUM_CLI_PATH — scriptable from day one
██
██ ▀▀
▄█████▄ ███████ ██▄████ ████ ██ ██ ████▄██▄
▀ ▄▄▄██ ██ ██▀ ██ ██ ██ ██ ██ ██
▄██▀▀▀██ ██ ██ ██ ██ ██ ██ ██ ██
██▄▄▄███ ██▄▄▄ ██ ▄▄▄██▄▄▄ ██▄▄▄███ ██ ██ ██
▀▀▀▀ ▀▀ ▀▀▀▀ ▀▀ ▀▀▀▀▀▀▀▀ ▀▀▀▀ ▀▀ ▀▀ ▀▀ ▀▀
$ atrium task create --title "fix flaky auth test" --priority high
✓ ATR-42 created
$ atrium task launch ATR-42 --adapter claude-code --worktree
✓ worktree created · agent started · bound to ATR-42
$ atrium agent list --json | jq '.[] | .room'
"auth-refactor" "integration-tests" "docs-pass"
$ atrium browser snapshot e2f1 --visible-only
$

One binary, every surface

Tasks, panes, rooms, workspaces, agents, browsers — all addressable from the same CLI.

atrium <noun> <verb>

For agents and humans

Every command accepts --json. Agents script atrium. Humans script atrium. Same surface.

--json on every verb

Self-documenting

Every verb has --help with exact flags. The CLI is the contract, and it can't drift.

--help is the contract