Skip to main content

OpenTelemetry export

Nora can export its agent telemetry under the OpenTelemetry GenAI semantic conventions (gen_ai.*), so per-agent token usage, estimated cost, and runtime resource metrics flow into the Datadog / Grafana / Langfuse / Honeycomb stack you already operate — no Nora-specific agent or scraper required. It is disabled by default and fail-open: a collector outage or misconfiguration never affects chat or any other request path.

What gets exported

Spans (OTLP only): one chat span per recorded LLM exchange, with gen_ai.operation.name=chat, gen_ai.request.model, gen_ai.system (provider), gen_ai.usage.input_tokens / output_tokens, gen_ai.conversation.id (session), and nora.agent.id / nora.runtime.family / nora.sandbox.profile / nora.source. The span is bracketed around the runtime call, so its duration reflects real latency. Metrics (OTLP and/or Prometheus):
This guide covers Nora’s own backend-level telemetry — the exchange-granularity spans and metrics above, exported from the control plane to your observability stack. Per-LLM-call and per-tool-call sub-spans are a separate, OpenClaw-specific capability: agents push real OpenTelemetry traces into Nora’s own native OTLP receiver, where they’re stored, searched, and shown in the Traces lens on /app/logs — see the logging guide. This isn’t available on Nora-managed agents yet: it needs a newer OpenClaw than Nora currently deploys. It’s OpenClaw-only (Hermes has no equivalent OTel export) and doesn’t currently forward into the external stack this guide configures — the two systems are independent today. A2A Agent Cards remain on the roadmap.

Enable it

Set the master switch and at least one exporter, then restart the backend:
You can run either exporter or both. Spans are OTLP-only — Prometheus carries metrics, not traces. With the Prometheus exporter on, scrape http://<backend-host>:9464/metrics.

Cost accuracy

The nora.agent.cost.usd counter is emitted unrounded per exchange (sub-cent values accumulate accurately), using COST_PER_1K_TOKENS and the optional per-model COST_MODEL_RATES_JSON map — see environment variables. Configure those rates to match your providers for meaningful cost dashboards.

Verify

With Prometheus enabled:
Drive one agent chat, then re-scrape — the token histogram and cost counter will carry your agent, model, runtime family, and sandbox profile labels. For a NemoClaw smoke, deploy an OpenClaw agent with sandbox_profile=nemoclaw; the export should show nora.runtime.family=openclaw and nora.sandbox.profile=nemoclaw without any API-key labels.