When a run takes a minute, watching a spinner for sixty seconds is a bad experience and a worse debugging story. We wanted a run to be legible while it happens, not just after — so progress is a stream of events, not a single blob at the end.
What an event carries#
As a crew works, LoopLlama emits an event at each meaningful transition: a step started, an agent produced output, a tool was called, the run paused for input, the run completed. Each event names the step and the agent and carries enough detail to render a live view or drive your own logic.
The same data, after the fact#
The events aren't a separate ephemeral channel — they're the persisted run, streamed. Everything you saw live is still there when you fetch the run by ID, in the same shape. That symmetry is deliberate: the live view and the after-the-fact trace are the same data, so there's nothing to reconcile between what you watched and what was recorded. Build a progress UI from the stream today, debug from the identical history tomorrow.