Statusline and observability
Flock exposes two complementary observability surfaces:
statusline.json— dashboard pane/agent snapshot (MCP-readable)flock run --json— typedflock-eventsNDJSON stream
Both are produced by the same runtime; they serve different consumers.
statusline.json
Written by flock dashboard to ~/.config/flock/statusline.json (override with workspace config).
{
"connected": true,
"socket": "/Users/you/.config/flock/flock.sock",
"agents": { "total": 3, "idle": 1, "working": 1, "blocked": 0, "done": 1, "unknown": 0 },
"selected": { "pane_id": "w1:p1", "agent": "claude", "status": "working" },
"vitals": { "circulation_score": 0.82, "deferred_ratio": 0.1, "cold_zone_count": 0, "herdr_pulse": 0.4 },
"live_pressure": { "zone_intensity": {} },
"telemetry": { "agent_transitions": 42 }
}
MCP read path
Use flock mcp tools or flock dashboard --history for headless telemetry queries.
flock-events schema (--json)
flock run --json emits one serde-tagged event per line. Canonical variants:
| Event | When |
|---|---|
episode_start | Before scheduler loop |
scheduler_tick | Each tick |
wake_summary | After dispatch batch |
task_dispatched | Per dispatched task |
verify_result | Plugin verify |
tool_decision | MCP / governance tool path |
permission_denied | Governance deny |
budget_exhausted | Dispatch cap hit |
deposit | Pheromone deposit |
archive_write_back | Post-run archive merge |
episode_end | After episode JSON written |
Multiplexer events.subscribe can bridge the same schema via EmittedEvent::from_flock_event.