Connect OpenClaw (OTLP)
OpenClaw is a self-hosted autonomous agent gateway. Its official @openclaw/diagnostics-otel plugin exports OpenTelemetry GenAI-convention traces for every agent run. Pointing it at Dobby gives you full, language-agnostic coverage — including runs triggered from channels (WhatsApp, Telegram, Slack) that an in-process SDK cannot observe — with the model name and token usage Dobby needs for evidence.
pip install dobby-collector[openclaw]) instruments runs you start from Python. The OTLP path on this page captures all runs from the gateway itself (any language, plus channel-triggered runs) and is the recommended path for production OpenClaw deployments.Quickstart
- In Dobby, go to Workloads → Connect a Workflow → OpenClaw (OTLP). Name the connector and copy the generated ingest token + webhook URL.
- Configure OpenClaw’s OTLP exporter with that endpoint, the bearer token, and the
http/jsonprotocol (below). - Run your agents. Each OTLP trace becomes one Dobby run and auto-scans against your activated frameworks.
# 1. Install the official OpenClaw OTLP diagnostics plugin, then ENABLE it in # your OpenClaw gateway config. The exact plugins-config entry is OpenClaw's — # see its plugin docs (https://openclaw.ai/) — but enabling it is required; # the plugin won't export until the gateway loads it. npm install @openclaw/diagnostics-otel # 2. The plugin reads the standard OpenTelemetry env vars. Point its OTLP/HTTP # trace exporter at your Dobby connector webhook, using the http/json protocol # (gzip OK; protobuf gets an HTTP 400 asking to switch to json). The generic # endpoint auto-appends /v1/traces — the connector accepts that path. (The # per-signal OTEL_EXPORTER_OTLP_TRACES_ENDPOINT also works: same URL, verbatim.) export OTEL_EXPORTER_OTLP_ENDPOINT="https://dobby-ai.com/api/v1/webhooks/workloads/<connectorId>" export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer <your-ingest-token>" export OTEL_EXPORTER_OTLP_PROTOCOL="http/json" # 3. Restart the gateway and run your agents. Every run streams to Dobby and # auto-scans on arrival. Verify in Workloads → Runs within a few seconds.
What Dobby captures from a trace
The adapter maps OpenTelemetry GenAI semantic-convention spans to Dobby’s run model (one trace = one run):
invoke_agentspan → the run (prompt, output, status, duration).chat/ LLM span →gen_ai.request.model+gen_ai.usage.input_tokens/output_tokens.execute_toolspan →gen_ai.tool.name+ input/output + duration.
Content capture (optional)
By default this connector is routing-only — it stores the model, token usage, latency, and tool names per run, but not message content. If your evidence needs the content itself — the run’s prompt and final output, per-call LLM completions, and tool arguments / outputs — you can opt in per connector:
- Enable “Also capture prompt & completion content” when you create the connector (or
PATCH capture_content: trueon an existing one). - Additionally set
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=truewhere the plugin runs. Dobby stores only what the plugin exports on its GenAI spans (gen_ai.prompt/gen_ai.completion/ tool I/O) — most instrumentations omit message content without this flag, so nothing is captured. The connect wizard adds this line to your snippet automatically when the toggle is on.
Notes & limits
- Protocol: v1 accepts OTLP/HTTP JSON (
OTEL_EXPORTER_OTLP_PROTOCOL=http/json), gzip-compressed or plain. Exporters sending protobuf receive an HTTP 400 asking to switch the encoding to json. - Endpoint forms: the generic
OTEL_EXPORTER_OTLP_ENDPOINTauto-appends/v1/traces— the connector accepts that path. The per-signalOTEL_EXPORTER_OTLP_TRACES_ENDPOINTalso works, set to the exact connector URL (used verbatim, no suffix). - Standards-based: the ingest targets the OpenTelemetry GenAI conventions, so any GenAI-instrumented OTLP source — not only OpenClaw — can use the same connector.
- Auth: the bearer token you set in the exporter headers is validated against the connector’s stored secret on every delivery.