Skip to main content
Coach ingests OTLP/JSON at http://127.0.0.1:5899/v1/traces, bearer-authed with a locally generated key. Any of the three ways below works - pick whichever fits your stack.

Get your ingest key

Every Coach install generates a local key. It’s printed in the terminal when Coach starts and shown on the Waiting for traces screen - or read it from the API:
The @glassray/tracing SDK handles OTLP encoding, gzip, batching, and retries. Wrap your agent with trace, and each step with llm / tool:
Point the SDK at your local Coach (it defaults to Glassray Cloud):
Token usage is extracted automatically from the model response (usage.input_tokens/output_tokens, or the OpenAI equivalents). model and provider on t.llm populate the LLM span; t.setInput / an input option capture prompts the SDK can’t otherwise see.

How ingest behaves

Live

Every ingested trace is pushed to the dashboard over SSE - the view updates without a refresh.

Batch-friendly

Spans are merged by span id, so a batch exporter that flushes one trace across several POSTs accumulates instead of overwriting.

Fault-tolerant

A malformed trace in a batch is skipped and logged - the batch’s other traces still land.

Bounded

Request bodies are capped at 16 MiB - an over-limit POST is rejected whole, so keep exporter batches under the cap.
Once traces are flowing, head to Find & fix deviations to run discovery and turn what it finds into evals.