Skip to content

Http Server

Headless HTTP hub for sessions, health, auth, and session-scoped SSE.

Terminal window
bmo serve --addr 127.0.0.1:8080 --auth-token "$BMO_AUTH_TOKEN"

For local-only development you can run without a token when the bind address is loopback:

Terminal window
bmo serve --addr 127.0.0.1:8080 --allow-no-auth

For the interactive app, enable the in-process hub in bmo.toml:

[options.http_server]
enabled = true
addr = "127.0.0.1:8080"
auth_token = "dev-token"
allow_no_auth = false

auth_token enables Bearer-token authentication. allow_no_auth = true is accepted only for loopback addresses; non-loopback unauthenticated binds are rejected during config validation.

bmo up and bmo autopilot --server use the same HTTP server path when you want the API server beside the scheduler or autopilot loop.

Routes live under /v1/ for sessions, messages, teams, config, models, operations, checkpoints, agent runs, eval/shadow, and related readouts. The server also exposes /metrics and /v1/health.

Session events stream from:

GET /v1/sessions/{id}/events

The SSE stream is an observer export. Session state, run ledgers, proposal lifecycle, and control-loop transitions remain in BMO’s canonical app and data store.

  • bmo config show-serve
  • TUI /serve
  • Structured logs: http_server.fired, http_server.action
  • Maintainer trace detail: Agent tracing
  • HTTP API maintainer topic: HTTP API Server