Flow diagram: one agent loop feeds one browser timeline through two pipelines — live SSE events, and PostgreSQL plus dbMessageTransformer after a page reload.
Pipeline 1 — live run
SSE events
PostgreSQL
persisted conversation
+ tool outcomes
dbMessageTransformer
outcomes → SSE events
Pipeline 2 — page reload
Agent loop
FastAPI background task
call Claude → run tools
↻ repeat
≡ must render identically
Timeline in the browser
Pipeline 1 · live run
Pipeline 2 · page reload
Hover or tap a pipeline to trace its path.
The same events reach the user through
two completely different code paths
— and both must render the identical timeline.