CLI and API
The Mac app is a shell around a local core, jigbee, which you can run on its own.
Commands
jigbee ui --port 8787 # the web app and API the Mac app uses
jigbee ping # model, browser helper, desktop helper: what is reachable
jigbee ask "what did you find out last time?" # one message, chat or job, as the app would
jigbee run "Open https://example.com and tell me the heading" # one job, printing each action
jigbee memory # what it remembers; `jigbee memory --forget <id|all>`
jigbee app # open the Mac app
jigbee mcp # jigbee as an MCP server over stdio, for other agentsLet other agents use jigbee
jigbee mcp exposes the running app to any MCP client: start_job, job_status, wait_for_job, list_sessions, what_jigbee_remembers. Jobs still pause for you in the app at the same gates.
claude mcp add jigbee -- jigbee mcp # Claude Code
codex mcp add jigbee -- jigbee mcp # Codex CLISessions API
Everything the app does goes through HTTP on 127.0.0.1:
POST /api/sessions {"message": "..."} start a session
GET /api/sessions list
GET /api/sessions/:id?after=N events since N, status, pending confirm
POST /api/sessions/:id/message add to a running job (steer) or queue
POST /api/sessions/:id/confirm | deny answer a pause
POST /api/sessions/:id/pause | resume | stop
GET /api/sessions/:id/files/:name a report or screenshot
GET /api/memory DELETE /api/memory/:id what it remembers
GET /api/stats jobs, steps, spend, token split
GET /api/status model, browser, Chrome
GET /api/coders GET|POST|DELETE /api/repos coding: coders found, allowed repos
GET|POST|DELETE /api/plugins MCP servers (plugins)The API answers on 127.0.0.1 only and refuses requests a browser marks as coming from another site, or with a Host that is not local. Every state-changing call also carries X-Jigbee-Token: the page gets it when it is served, the app and scripts pass it in, and anything else on your Mac reads it from ~/Library/Application Support/jigbee/ui.token.
A session carries a needs_confirm flag with confirm_kind of action, question, desktop, budget or login, and the question text.
Evals
python3 scripts/evals.py # the public suite, cold then warm
python3 scripts/evals.py --jobs flights-clt-sfo
python3 scripts/evals.py --chrome # read-only jobs in your signed-in Chrome
scripts/install_nightly_evals.sh # 03:30 every night, publishes the badge