Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

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 start

bento daemon stop

Stop the daemon. Sends SIGTERM and waits up to 10s before escalating to SIGKILL.

bento daemon stop

bento 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 restart

bento 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 install

bento daemon uninstall

Stop, disable, and remove the user service.

bento daemon uninstall

Observability

bento daemon status

Show daemon process status and probe the local and public-tunnel endpoints for reachability.

bento daemon status
daemon: 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
FlagDescription
-f, --followTail logs in real-time
-n <lines>Number of lines to show (default: 50)
--agentTail the most recent agent run's stdout; pass a run ID as the positional target to select a specific run
--render flatCollapse stream-json events to readable per-turn text
--render rawRaw NDJSON (default)

bento trace <trigger-id>

Print a full lifecycle trace for a trigger — trigger → workload → invocations → agents.

bento trace <trigger-id>
FlagDescription
--jsonOutput as JSON (for programmatic consumption)
--no-messagesSkip extracting agent messages from stdout logs

bento queue status

Show the Graphile Worker queue state and job counts.

bento queue status
state:     active
waiting:   2
active:    1
failed:    0
completed: 47
delayed:   0

bento 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
FlagDescription
--fixAuto-remediate issues (requires per-check opt-in in bento.doctor.yaml)
--jsonOutput 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
ScopeTargetDescription
runtime<name>Check a runtime is installed and callable
env<KEY>Check an environment variable is visible in the sandbox
gh-authCheck 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
FlagDescription
--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>
FlagDescription
--eventPrint the original webhook payload (JSON)
--promptPrint the rendered user prompt
--system-promptPrint the assembled system prompt (SOUL.md + skill body + augment)
--argsPrint the full argv as JSON
--sizePrint prompt + argv size breakdown with token estimates
--jsonPrint 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"}'
FlagDescription
--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
FlagDescription
--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>
SubcommandFlagsDescription
issue--email <addr> (required), --name <label>, --forceMint a bearer token; --force rotates an existing token for the email
listList 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?"
FlagDescription
--fastBM25 only — no LLM reranking, instant
--runtime <r>Runtime to use (default: claude)
--model <m>Model to use (default: claude-sonnet-4-6)

Global Options

OptionDescription
--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

VariableDescription
BENTO_DAEMON_ENTRYOverride path to the daemon entrypoint
BENTO_MANAGEMENT_TOKENAuth token for management endpoints