Control plane · simulation kernel

Singing Bird

A canonical-world simulation kernel with LLM-powered synths, exposed as REST, MCP, and SSE over a single OpenAPI schema.

46
API tools
8
scenario packs
1
live sessions
13037
audit records

What this is

Four pillars that define the system under the control plane.

KernelCanonical world with transactional cycles

Every cognitive cycle runs against a working copy. The Director commits only after invariants pass; on failure, the working copy is discarded and canonical state is unchanged. Snapshots land at cycle boundaries.

SynthsLLM-powered agents with theory of mind

Each synth owns a phenomenology — self-model, beliefs, mental models of other synths, affect, projects, memories. Perception is mediated through sensory bundles; actions flow through symbolic intent resolution.

AuditAppend-only replayable event trail

Every canonical change is journaled to per-session JSONL. Runs are deterministic (stable IDs from scenario_id + authored_id) and fully replayable from cached LLM responses.

SurfacesHTTP/JSON + MCP + SSE, one OpenAPI schema

The same OpenAPI spec drives REST, Swagger UI, ReDoc, the LLM tool manifest, the MCP tools/list for agent discovery, and this dashboard. Six consumers, one source of truth.

Who it's for

Each role has a direct entry point. Scopes are checked on every call.

ObserverFor watchers

Attach to a running simulation without disturbing it. scope: read

  • Dashboard → Sessions — live session list with sim time
  • Dashboard → Observation — overviews, events, changes, reports
  • SSE streaming at /v1/sessions/{id}/stream — browser-native live feed
  • Natural-language ref resolver (resolve_ref) for finding synths by name

OperatorFor drivers

Step the simulation, submit turns, manage sessions. scope: operate

  • Create sessions from scenario packs (list_scenarioscreate_session)
  • Advance cycles (step_session) or auto-advance (resume_session)
  • Inject human turns via submit_turn
  • Snapshot and roll back with list_snapshots + restore_snapshot

BuilderFor integrators

Build on top of the control plane — agents, UIs, or new synths. scope: any

  • OpenAPI 3.1 at /openapi.json — authoritative contract
  • MCP streamable HTTP at POST /mcp — JSON-RPC 2.0 tool discovery for agents
  • Scenario authoring — YAML at scenarios/*.yaml; contract in Architecture
  • Extending the kernel — dev guide covers ruleset boundaries, invariants, persistence

AdminFor debuggers & ops

See what happened, find what broke, drop a new scenario without code changes. scope: admin

  • Full request/response audit at /v1/admin/logs — 15 filters
  • Every response carries X-Request-Id — grep the log by ID for full context
  • Dashboard log tile renders the tail with colored status + MCP markers
  • Apply live patches (apply_patch) and queue stimuli (queue_stimulus) — admin only

Quick starts

Copy-paste, LAN-accessible. No auth by default; set SINGING_BIRD_API_TOKEN to turn it on.

Discover scenarios

# List available scenario packs
curl -s https://singing-bird.benac.dev/v1/scenarios | jq

Create and step a session

# Create a session and keep the id
SID=$(curl -s -X POST https://singing-bird.benac.dev/v1/sessions \
  -H 'content-type: application/json' \
  -d '{"scenario_path":"scenarios/park_bench.yaml"}' | jq -r .session_id)
# Advance one cognitive cycle
curl -X POST https://singing-bird.benac.dev/v1/sessions/$SID/step \
  -H 'content-type: application/json' -d '{"n":1}'

MCP tool discovery

# Any MCP-aware client (Claude Desktop, agent, etc.)
curl -X POST https://singing-bird.benac.dev/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | jq

Debug a request by ID

# Every response carries X-Request-Id; use it to pull the record
curl -D - https://singing-bird.benac.dev/v1/scenarios -o /dev/null | grep -i request-id
curl 'https://singing-bird.benac.dev/v1/admin/logs?request_id=<id>' | jq

Every surface, one schema

All six are derived from the same OpenAPI document. Change the code, all six update.

Dashboard

Operator UI — 22 tiles across five lanes, live status, audit tail, theme-aware.

OpenAPI schema

OpenAPI 3.1 JSON. Source of truth for every other surface. Load into any generator.

Swagger UI

Interactive API explorer with try-it-out forms for every endpoint.

ReDoc

Reference-style API docs, easier to read in long form than Swagger.

MCP endpoint

JSON-RPC 2.0 over POST /mcp. tools/list, tools/call, ping. GET returns 405.

Everything, one click

Bookmarkable index of every URL on this host.