Mojule Docs

Connect OTEL

Anthropic's first-party OpenTelemetry exports usage telemetry from Claude Code and Cowork. An Organization Admin points it at Mojule's collector with a bearer token — no software is installed on any endpoint.

Get your ingest token

In the Mojule dashboard, open Connect and issue an org ingest token. It starts with mtk_ and is shown once at creation. Use it as the bearer token in both channels below; rotate it from the dashboard if it leaks.

Claude Cowork — Monitoring panel

In Claude Desktop, open Organization settings → Cowork → Monitoring and set the three OTLP fields. Stored server-side, applied to every Cowork seat in your org.

Cowork Monitoring fields

text
OTLP endpoint   https://ingest.mojule.cloud
OTLP protocol   http/json
OTLP headers    Authorization=Bearer <your-token>
If your org restricts network egress, add ingest.mojule.cloud under Capabilities → Network egress, or exports are silently dropped.

Claude Code — managed-settings.json

Distribute a managed-settings.json fleet-wide via Anthropic server-managed settings (console-delivered, refreshed hourly) or your MDM (Jamf / Intune / GPO). Managed settings override user settings and cannot be bypassed, so every Claude Code install inherits the export.

Save this as /etc/claude-code/managed-settings.json

managed-settings.json

json
{
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "CLAUDE_CODE_ENHANCED_TELEMETRY_BETA": "1",
    "OTEL_LOGS_EXPORTER": "otlp",
    "OTEL_METRICS_EXPORTER": "otlp",
    "OTEL_TRACES_EXPORTER": "otlp",
    "OTEL_LOG_USER_PROMPTS": "1",
    "OTEL_LOG_TOOL_DETAILS": "1",
    "OTEL_EXPORTER_OTLP_PROTOCOL": "http/json",
    "OTEL_EXPORTER_OTLP_ENDPOINT": "https://ingest.mojule.cloud",
    "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT": "https://ingest.mojule.cloud/v1/traces",
    "OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer <your-token>",
    "OTEL_RESOURCE_ATTRIBUTES": "mojule.tenant_id=<your-tenant-id>"
  }
}

Replace <your-token> with your ingest token before deploying.

API keys, Bedrock, or Vertex

Those auth modes don't attach an organization.id, so add a tenant resource attribute so events stay attributed to your org:

Shell

bash
OTEL_RESOURCE_ATTRIBUTES=mojule.tenant_id=<your-tenant-id>

Your tenant id is shown on the dashboard Connect page.

Verify

Once the config is live and someone uses Claude, events start arriving. The Connect page shows a green “receiving from N seats” state and lists which surfaces (Claude Code, Claude Cowork) have reported in.

Docs - Connect OTEL | Mojule