CLI Reference
The bento CLI manages the daemon lifecycle and provides operational visibility.
Lifecycle
bento daemon start
Start the daemon. Uses the installed user service (launchd on macOS, systemd on Linux) when present; otherwise spawns a detached Bun process.
bento daemon startbento daemon stop
Stop the daemon. Sends SIGTERM and waits up to 10s before escalating to SIGKILL.
bento daemon stopbento daemon restart
Stop then start the daemon. On macOS with a launchd-installed service, the service is reinstalled so the plist is regenerated — launchctl kickstart alone would miss edits to env vars, working directory, or PATH.
bento daemon restartbento daemon install
Install the daemon as a user service: a launchd agent on macOS, a systemd user unit (~/.config/systemd/user/bento.service) on Linux.
bento daemon installbento daemon uninstall
Stop, disable, and remove the user service.
bento daemon uninstallObservability
bento daemon status
Show daemon process status and probe the local and public-tunnel endpoints for reachability.
bento daemon statusdaemon: pid=12345
local : reachable (4ms) — bento uptime=3600s
tunnel : not configured (no `tunnel:` block in bento.yaml)When a tunnel is configured, the tunnel line reports the public URL and its latency — see Public Access.
bento daemon logs [target]
Show daemon logs, or logs for a specific agent.
bento daemon logs # daemon logs
bento daemon logs reviewer # agent-specific logs
bento daemon logs -f # follow mode
bento daemon logs -n 100 # last 100 lines| Flag | Description |
|---|---|
-f, --follow | Tail logs in real-time |
-n <lines> | Number of lines to show (default: 50) |
--agent | Tail the most recent agent run's stdout; pass a run ID as the positional target to select a specific run |
--render flat | Collapse stream-json events to readable per-turn text |
--render raw | Raw NDJSON (default) |
bento trace <trigger-id>
Print a full lifecycle trace for a trigger — trigger → workload → invocations → agents.
bento trace <trigger-id>| Flag | Description |
|---|---|
--json | Output as JSON (for programmatic consumption) |
--no-messages | Skip extracting agent messages from stdout logs |
bento queue status
Show the Graphile Worker queue state and job counts.
bento queue statusstate: active
waiting: 2
active: 1
failed: 0
completed: 47
delayed: 0bento queue resume
Resume processing after a circuit breaker trip.
bento queue resume
bento queue resume --token <token>Diagnostics
bento doctor
Validate infrastructure: config, database, runtimes, sandbox, tunnel, daytona, auth, repos, orchestrator, worktrees, workloads, and queue. Checks are defined in bento.doctor.yaml.
bento doctor| Flag | Description |
|---|---|
--fix | Auto-remediate issues (requires per-check opt-in in bento.doctor.yaml) |
--json | Output as JSON |
bento probe <scope> [target]
Run a single sandbox probe through the daemon.
bento probe runtime claude
bento probe env ANTHROPIC_API_KEY
bento probe gh-auth
bento probe ping claude/claude-sonnet-4-6| Scope | Target | Description |
|---|---|---|
runtime | <name> | Check a runtime is installed and callable |
env | <KEY> | Check an environment variable is visible in the sandbox |
gh-auth | — | Check GitHub authentication |
ping | <runtime>/<model> | Round-trip a minimal request to a model |
bento runtimes
Ping each unique (runtime, model) combination referenced by agents/*/SOUL.md and skills/*/SOUL.md.
bento runtimes| Flag | Description |
|---|---|
--timeout <ms> | Per-combo timeout (default: 60000) |
Triggers & auth
bento trigger inspect <id>
Show what the runtime would receive for a stored trigger.
bento trigger inspect <id>| Flag | Description |
|---|---|
--event | Print the original webhook payload (JSON) |
--prompt | Print the rendered user prompt |
--system-prompt | Print the assembled system prompt (SOUL.md + skill body + augment) |
--args | Print the full argv as JSON |
--size | Print prompt + argv size breakdown with token estimates |
--json | Print the full inspection result as JSON |
--pipeline <n> | Pick a single pipeline when multiple match |
bento replay <trigger-id>
Re-dispatch a stored trigger through the daemon.
bento replay <trigger-id>
bento replay <trigger-id> --payload '{"key":"value"}'| Flag | Description |
|---|---|
--payload <json> | Override the trigger payload |
--token <token> | Management token (or set BENTO_MANAGEMENT_TOKEN) |
bento trigger schedule <name>
Fire a scheduled pipeline now, bypassing its cron — the manual equivalent of a cron tick.
bento trigger schedule triage-sweep| Flag | Description |
|---|---|
--token <token> | Management token (or set BENTO_MANAGEMENT_TOKEN) |
bento token
Manage bearer tokens for authenticated daemon access.
bento token issue --email you@example.com
bento token list
bento token revoke <id>| Subcommand | Flags | Description |
|---|---|---|
issue | --email <addr> (required), --name <label>, --force | Mint a bearer token; --force rotates an existing token for the email |
list | — | List issued tokens |
revoke <id> | — | Revoke a token by id |
bento ask <query>
Search the wiki, blueprints, and recipes, then answer with Claude.
bento ask "how do I configure a tunnel?"| Flag | Description |
|---|---|
--fast | BM25 only — no LLM reranking, instant |
--runtime <r> | Runtime to use (default: claude) |
--model <m> | Model to use (default: claude-sonnet-4-6) |
Global Options
| Option | Description |
|---|---|
--port <port> | Daemon port for status/probe/queue commands (default: 7890) |
--token <token> | Management token for state-changing commands (or set BENTO_MANAGEMENT_TOKEN) |
Environment Variables
| Variable | Description |
|---|---|
BENTO_DAEMON_ENTRY | Override path to the daemon entrypoint |
BENTO_MANAGEMENT_TOKEN | Auth token for management endpoints |

