Follow a run and inspect failures
Choose live progress, stored journals or recovery tools for the information you need.
While it runs, and after
Section titled “While it runs, and after”Use live events to follow the work, journals to inspect it afterwards and recovery tools when it stops before completion. An observer only reports what happens; an error in its callback does not change the task’s outcome.
- Follow progressReceive the events of one dispatch as they happen.
- Observation hub and OpenTelemetryOne stream for a whole run, exported as traces and metrics.
- JournalsA durable record of each dispatch, read back after the run.
- Replay without a modelReproduce a recorded run, event by event, with no model call.
- Recover workFind, inspect and restore what a failed run left behind.
- DiagnosticsCheck the host, engine, image and agent CLI before paying for a model call.
Read a run back
Section titled “Read a run back”Every dispatch writes a journal. result.logReference points at the finished one; readJournal() returns its events.
Without logging, the journal goes to a local transport under <repository>/.outpost/storage. Record the run with the replay options and the same journal becomes a deterministic test.
What Outpost keeps after a failure
Section titled “What Outpost keeps after a failure”| What | Where | Kept when |
|---|---|---|
| Worktree | .outpost/workspaces/ | The run failed, integration conflicted, or it is dirty |
| Remote transfer | .outpost/recovery/ | Cloud changes could not be applied to your checkout |
| Conversation | .outpost/conversations/ or the agent’s own store | After each turn and on failure |
| Workflow progress | .outpost/storage/ or your transport | After each finished task |
A retained worktree is an ordinary Git worktree on its branch: open it, commit what you keep, merge the branch.
Limits
Section titled “Limits”- Sink delivery is bounded and may report loss. It is a stream of observations, not a durable state registry; usage accounting stays independent of it.
- A journal shares the hub’s bounded queue. A transport that fails or falls behind can leave events out, and
readJournal()then returns only what was written before the failure. - Journals hold prompts, agent messages and tool results, so they contain repository content. Store and share them like the code.
- A replay reproduces a recorded run only. A prompt, baseline or tree that differs throws
ReplayDivergenceinstead of inventing events. - Recovery is explicit. Outpost never discards a dirty or detached worktree as routine cleanup, and a cleanup timeout leaves resources pending.
- Digests and lineage give integrity, not authentication: they prove a file is unchanged, not who produced it.
API: createObservationHub · ObservationHub · createOpenTelemetryObserver · readJournal · Logging · createReplayAgent · recoveryDetails · inspectRecovery.