---
title: "Ingest"
description: "Receive OpenTelemetry gen_ai traces on a local door."
---

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.

```bash
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](/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

```bash
assay show
assay turns --session <id>
assay dashboard
```

Labelling stays optional. See [Applications](/applications).
