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

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.