- 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 that contains an LLM call as its own session when the exporter doesn’t stamp one (traces with no LLM call are not turned into sessions)
OpenClaw
Install our openclaw-belvedir plugin. It has zero dependencies (plain JavaScript on Node built-ins, nothing for a security scanner to flag) and, unlike OpenClaw’s stock OTel exporter, it stamps OpenClaw’s real session identity on every span: a multi-turn conversation becomes one Belvedir session instead of one session per turn, and OpenClaw’s single-span housekeeping traces are skipped.~/.openclaw/openclaw.json, then restart the Gateway (openclaw gateway restart):
hooks.allowConversationAccess is OpenClaw’s consent gate for message content: without it the plugin still runs but only structure and timing arrive, and nothing can be segmented into tasks. Set BELVEDIR_PRIVACY_MODE=true (or config.privacyMode) to send usage and structure only. To confirm the wiring without spending model tokens, the plugin ships a simulator that fires the exact hook sequence of a real two-turn session and prints the session id to look for on the Data pages. Run it from a checkout of the plugin repo:
Hermes Agent
Install our hermes-belvedir plugin. It has zero Python dependencies: nothing topip install, no dependency tree for a security scanner to flag, and few enough lines to review before enabling, as Hermes’ security policy asks. It stamps session.id on every span, so multi-turn Hermes sessions become Belvedir sessions as-is.
BELVEDIR_PRIVACY_MODE=true to send usage and structure only. Both plugins are configured environment-first (the variables are listed under Plugin variables), with an optional config.json next to the installed plugin.
To confirm the wiring without running the agent, the plugin ships a simulator that fires the exact hook sequence of a real two-turn session:
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: