Observe your app
You will build: the everyday observation loop — watch any topic live, tail the engine log, and read per-agent throughput.
Prerequisites
- Any deployed app.
1 · Tail any topic — the superpower
pulse events tail --topic oncall.reason.out
Every stage boundary is a durable topic, so every seam of your app is observable — not just the ends. Debugging usually starts here: tail the topic just before where things look wrong.
2 · Follow the engine log
pulse logs -f
Deploys, stage lifecycle, connector activity, errors with causes.
3 · Read a stage's vitals
pulse metrics agent reason
Per-agent throughput, lag and error counts — is the stage keeping up with its input topic?
4 · Stream events into anything else
curl -N -H "Authorization: Bearer $TOKEN" \
"http://localhost:9090/api/pulse/events/stream"
The SSE endpoint pushes events as they land — the same feed your dashboards, scripts or a browser tab can consume. Getting $TOKEN is covered in Call your app from anywhere.
What just happened
Observability here isn't an add-on — the architecture is the instrumentation. Because everything flows through named topics, "what is my app doing right now" is always answerable with a tail, and "how fast" with a metrics call. For the full picture (Prometheus metrics, tracing, audit streams) see the observability pages on streamflowmesh.io.
Troubleshooting
tail shows nothing at all
Verify the topic name: it's <app>.<stage>.out exactly as named in pulse.yaml. pulse logs -f tells you if events are flowing but failing inside a stage.