Before: Log archaeology
Noise-heavy… 5,000 lines of interleaved stdout …
error: command failed (exit code 1)
… which job? which step? grep and hope.Interleaved text output forces manual hunting through massive logs.
Loom writes structured manifests and event streams so agents and teams can jump to the failing unit without scanning logs. Fewer tokens consumed. Faster feedback loops.
3 files
to locate any failure
~2 KB
total manifest size
5 min
to first workflow run
… 5,000 lines of interleaved stdout …
error: command failed (exit code 1)
… which job? which step? grep and hope.Interleaved text output forces manual hunting through massive logs.
pipeline/manifest.json -> failing_job_id
jobs/<id>/manifest.json -> failing_step_events_path
.../events.jsonl -> exact failure, nothing elseRead 3 files (~2 KB), jump to the failing unit, and move straight to root cause.
AI agents burn tokens on noise. Loom gives them signal.
Agents read small JSON manifests and narrow JSONL event streams — typically ~2 KB to reach the failing unit. No 5 MB log dumps eating your context window.
Every manifest contains stable file paths to the next artifact. Agents follow pointers instead of parsing unstructured text — no regex, no heuristics, no hallucinated line numbers.
Structured JSON means agents can JSON.parse() their way to root cause. No natural-language extraction from log soup. Fewer tokens in, faster diagnosis out.
Agents locate failures by reading 3 small JSON manifests (~2 KB total), not megabytes of interleaved logs. Structured pointers mean fewer tokens consumed and faster automated diagnosis.
Same workflow, same artifacts, every run. Local execution produces stable, comparable artifacts so failures are reproducible and explainable — no 'works on my machine' mysteries.
Receipts and manifests are file-addressable pointers you can attach to issues, diff across runs, and hand to teammates — no log archaeology required.
Write a workflow in `.loom/workflow.yml`.
Run `loom check` to validate schema.
Run `loom run --local`.
Follow manifest pointers to the failing unit.
Three short paths depending on what you want to do next.