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:- Glassray SDK
- OpenTelemetry exporter
- Raw OTLP
The Point the SDK at your local Coach (it defaults to Glassray Cloud):
@glassray/tracing SDK handles OTLP encoding, gzip, batching, and retries. Wrap your agent with trace, and each step with llm / tool: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.