When the work is not a coding-harness log and not a Node embed, run the ingest door and point an OpenTelemetry exporter at it.
assay serve --tenants tenants.json
The door accepts OTLP/HTTP gen_ai traces (and the OpenInference dialect). It prices what it can, records spans, and seals conversation content that arrived on the wire.

Tenants

You pass a tenant file. Each tenant has a token. The door records under that tenant’s principal. Treat the token like a password. --help shows the file shape. Do not put secrets in the command line; keep them in the file with locked permissions.

What it is for

  • An agent runtime in another language
  • A gateway that already emits OpenTelemetry
  • Eval events that should land as outcomes
It creates the store if absent (unlike read-only inspection verbs).

What it is not

  • Not a public internet service. Bind it where only your exporters can reach it.
  • Not a replacement for capture of Claude Code / Grok / Codex / OpenCode logs. Use Capture for those.
  • Not a place conversation text is stored in the clear. Wire content is sealed the same way file capture is.

After it is running

assay show
assay turns --session <id>
assay dashboard
Labelling stays optional. See Applications.