Your own work with AI
You already talk to a coding harness. Assay reads the session logs that harness already wrote. Mode:corpus (the assay init default).
Fill the store: assay capture … and assay sweep on.
Labels: core. assay labelling on. Place sittings on the objective tree. Set type (kind of work).
Read: Dashboard, search, share a sitting when someone outside needs the whole conversation.
This path answers: what did I spend, on what, for which product, and what did we actually say.
Observability in an agent loop
You ship a product that calls models. Assay records each unit of work as it happens. It is still not in the request path: you callrecord after the model returns, or you export traces to the ingest door.
Mode: observability.
Fill the store: embed the library, or point OpenTelemetry at assay serve.
Labels: optional. Sweep without labelling is enough. A cheap local judge is allowed. Do not treat that pass as corpus quality.
Read: assay turns --json is the debug surface. The dashboard still works. Embedding <assay-dashboard> puts the same panels inside your own app, behind your login.
This path answers: what did this loop spend, per user, per session, per task — and what did the loop say.
See Agent loop and Debug console.
Same ledger, different consent
| Corpus | Observability | |
|---|---|---|
| Who the work is for | You, building | Your users, running your agent |
| Capture | File sweep of harness logs | record / recordTurn or OTLP |
| Labelling | Turn it on | Optional |
| Judge over full text | Sovereignty gate | Same gate |
| Typical next read | Dashboard, objectives, share | assay turns, spend, waste |
mode: "corpus" and both switches off. You choose.