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.

Which OpenClaw path should I use? The Python Collector SDK (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

  1. In Dobby, go to Workloads → Connect a Workflow → OpenClaw (OTLP). Name the connector and copy the generated ingest token + webhook URL.
  2. Configure OpenClaw’s OTLP exporter with that endpoint, the bearer token, and the http/json protocol (below).
  3. 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_agent span → the run (prompt, output, status, duration).
  • chat / LLM span → gen_ai.request.model + gen_ai.usage.input_tokens / output_tokens.
  • execute_tool span → 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:

  1. Enable “Also capture prompt & completion content” when you create the connector (or PATCH capture_content: true on an existing one).
  2. Additionally set OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true where 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.
Before you enable it. Secrets (API keys, tokens) are masked server-side, but content capture stores the rest of the message content as-is — including proprietary code and any PII your agents handle. Leave it off unless you specifically need message text as evidence.

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_ENDPOINT auto-appends /v1/traces — the connector accepts that path. The per-signal OTEL_EXPORTER_OTLP_TRACES_ENDPOINT also 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.
Prefer instrumenting from Python instead? See the OpenClaw Python Collector quickstart.
Connect OpenClaw (OTLP) | Dobby Docs