- Endpoint:
https://platform.belvedir.ai/api/v1/traces - Auth: your
bv_live_...key in anx-api-keyheader (or as a Bearer token) - Wire formats:
http/protobufandhttp/json, gzip accepted - Content: spans that follow the OpenTelemetry GenAI conventions (
gen_ai.input.messages/gen_ai.output.messages) show up as full conversations - Sessions: read from a
session.idorgen_ai.conversation.idspan attribute. Send the headerx-belvedir-session-from: traceto treat every trace as its own session when the exporter doesn’t stamp one
OpenClaw
Install the official exporter plugin, then configure it inopenclaw.json. It speaks http/protobuf and omits session ids on purpose, so add the session-from-trace header: each agent turn becomes one session. Set captureContent: true, or the spans carry token counts but no messages and nothing can be segmented into tasks.
openclaw agent --local bypass the Gateway and export nothing.
Hermes Agent
Install and enable the community hermes-otel plugin and add Belvedir as a generic OTLP backend. It stampssession.id on every span, so Hermes sessions become Belvedir sessions as-is.
~/.hermes/plugins/hermes_otel/config.yaml (the plugin reads this path even when HERMES_HOME is set elsewhere). The capture flags lift the default 1,200-character preview clip so full prompts and replies arrive:
Any other OpenTelemetry SDK
The stock OTLP/HTTP trace exporter works with environment variables alone. Add the session header if your agent doesn’t setsession.id: