The Anthropic Claude Code input receives OTel telemetry data emitted by Claude Code, Anthropic's agentic coding tool. Claude Code natively supports OpenTelemetry for monitoring usage, performance, and operational metrics.
Requirements
There is no configuration needed at the input level in Monad. Simply create a Claude Code input and attach it to a pipeline.
All configuration is done on the Claude Code side, where you point its OTel exporter to the Monad endpoint with the appropriate authentication headers.
Claude Code Configuration
To send telemetry from Claude Code to Monad, configure the OpenTelemetry exporter in your Claude Code settings. You will need:
A Monad organization API key with the pipeline:data:write permission
The pipeline ID of the pipeline with your Claude Code input
Required Headers
Header
Value
Description
Authorization
ApiKey <your-api-key>
Monad organization API key
Your pipeline's ingest hostname, <pipeline-id>.data.monad.com, tells Monad which pipeline the telemetry belongs to.
Self-hosted deployments
A per-pipeline ingest host needs the *.data.<your Monad domain> wildcard in place: a DNS record plus a matching certificate SAN. Monad Cloud has this. A self-hosted deployment has it only if whoever installed Monad set it up, so check with them if you are not sure. See Customer Helm Install for the setup.
Without it, point the exporter at your own Monad hostname (https://<your-monad-host>:4318 for OTLP/HTTP, :4317 for gRPC) and name the pipeline with a header instead: Monad-Pipeline-Id: <pipeline-id>, or the lower-case monad-pipeline-id metadata key for gRPC. Everything else, including the API key, is the same.
Example Configuration
Local Setup
For individual users, set the following environment variables before launching Claude Code:
These can also be set directly in your local Claude Code configuration file rather than exporting them in your shell. See the Claude Code Monitoring Usage guide for details.
Organization-Wide Setup
To enforce telemetry across your entire organization, administrators can configure these settings centrally so individual users don't need to set anything locally. See the Administrator Configuration guide for how to roll this out org-wide.
This is a push (receiver) input: Monad ingests records as the source sends them, so there is no polling interval. See Input Sync Frequency for details.