Operations

Run, inspect, and clean projects

Suzumio is designed to be transparent. Every important object has a CLI view and an HTTP view backed by the same SQLite store.

Runtime Root

export SUZUMIO_ROOT=/data/suzumio-runtime

Runtime state should live outside the source repository. The root contains project databases, turn input/output files, agent workspaces, artifacts, and logs.

Recommended Run Pattern

npm run build
docker build -t suzumio-runner:dev .

export SUZUMIO_ROOT=/data/suzumio-runtime
suzumio config render examples/demo.yaml
suzumio init examples/demo.yaml
suzumio serve --host 0.0.0.0 --port 39400

Then, from another terminal:

export SUZUMIO_ROOT=/data/suzumio-runtime
suzumio start demo
suzumio send demo pm P1 "Start the project."

Operational Checklist

StageCheckCommand
BuildTypeScript emits dist/.npm run build
ImageRunner image exists locally.docker image inspect suzumio-runner:dev
ConfigImports resolve and secrets are not committed.suzumio config render file.yaml
StoreProject was initialized under the expected root.suzumio status project
ServerHTTP and ToolHost are reachable.curl http://127.0.0.1:39400/health
SchedulerProject is running and idle agents have unread messages.suzumio messages project
TurnContainer completed and output was captured.suzumio turns project

Inspecting a Turn

A turn directory contains the exact runner input and output:

$SUZUMIO_ROOT/demo/turns/turn_.../
  input.json
  output.json

The input includes the rendered prompt, agent identity, controller URL, runner config, and tool definitions available to the model. This makes failed turns reproducible and reviewable.

Debugging Scheduler Silence

SymptomLikely causeAction
Project never starts a turn.Project is not running.suzumio start project
Agent stays quiet.No unread inbound messages for that agent.suzumio send project agent P1 "..."
Message exists but no new turn starts.Agent is already running.Wait for completion. Suzumio is intentionally non-preemptive.
Turn fails immediately.Image, mount, or Docker daemon issue.Inspect suzumio turns, turn files, and docker logs.

Cleaning Debug Containers

Early Suzumio keeps completed turn containers for debugging. Remove only containers that Suzumio created:

docker ps -a --filter name=suzumio
docker rm <container-name>

Do not run broad Docker prune commands on shared machines. Suzumio should only clean containers it created.

Secrets

Use environment variables for API keys and local, untracked config for private gateway URLs.

export SUZUMIO_GATEWAY_API_KEY=...
suzumio serve --host 0.0.0.0 --port 39400

The runner backend passes configured provider key environment variables into containers when those variables exist in the host environment. Committed examples should use placeholder endpoints and environment-variable names only.

Long-running Servers

For a long-running server, use a process manager such as systemd, a container supervisor, or a supervised shell session. Bind the server only to trusted interfaces until user-facing API authentication lands.

suzumio serve --host 127.0.0.1 --port 39400

If Docker containers need to call the host ToolHost, bind to an address reachable from Docker and set backend.controllerUrl accordingly.

Documentation Deployment

The GitHub Pages workflow uploads the static docs/ directory. The custom domain is configured by docs/CNAME and DNS. GitHub may serve the custom domain over HTTP until certificate provisioning finishes; enable HTTPS enforcement once GitHub marks the certificate ready.