OpenTelemetry
Send model usage and cost to Proxon from anything that emits OpenTelemetry.
If your agent, service, or AI tool already emits OpenTelemetry, Proxon can read its model usage and cost directly, in any language. That includes server-side AI that never runs on anyone's device, and tools that already speak OTLP such as Claude Code and GitHub Copilot. There is no new agent, no proxy, and no certificate. You mint a credential and set two standard OTLP environment variables. Proxon reads only the structured usage it needs to attribute cost, which is the model and the token counts, and you decide what the rest of your telemetry sends.
This takes about five minutes. You mint an organization credential, point your existing OpenTelemetry exporter at Proxon, and confirm the usage lands. You need to be an organization owner or admin to mint the credential. Anyone can wire up the exporter once they have it.
Step 1: Mint a service credential
In Proxon, open Org Settings, then Credentials, and choose Generate. Proxon issues a bearer token that starts with prx_svc_, scoped to your organization.
The token is shown once. Copy it and store it as a secret, such as an environment variable or an entry in your secrets manager. Proxon keeps only a hash, so it cannot show the token to you again. If you lose it, rotate it or generate a new one. You can revoke or rotate a credential from the same screen at any time.
Only organization owners and admins see Credentials. If you do not, ask an admin to mint one for you. If your organization has it enabled, you can instead open Preferences, then Connect AI Tools, and create your own personal credential with no administrator in the path.
Step 2: Point your OTLP exporter at Proxon
Set the two standard OpenTelemetry environment variables below. Any OTLP/HTTP exporter reads them on its own, and there is nothing Proxon-specific to import. Proxon accepts both an agent's native OTLP and stock OpenTelemetry spans, in either JSON or protobuf encoding.
# Point your OTLP/HTTP exporter at Proxon's traces endpoint.
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://ingest.proxon.ai/v1/traces"
# Authenticate with the service credential you minted in Step 1.
# The value is percent-encoded per the OTLP spec, so Bearer%20<token> means Bearer <token>.
export OTEL_EXPORTER_OTLP_TRACES_HEADERS="Authorization=Bearer%20prx_svc_<prefix>_<secret>"
# Optional. Name the agent this telemetry belongs to, since the rollup keys on it.
# This sets the standard service.name resource attribute that Proxon reads.
export OTEL_SERVICE_NAME="my-agent"Swap prx_svc_<prefix>_<secret> for the token from Step 1. The next batch your exporter flushes will land in Proxon.
Step 3: Confirm it landed
Turn on OpenTelemetry in Settings, then Data Collection, so Proxon shows the Agent Cost view. Then open Cost Intelligence. Your agent's spend appears there, broken down by model and by the agent name you set, usually within a minute of the first flush.
What Proxon reads from your spans
Proxon turns each span into one usage row, using the standard OpenTelemetry GenAI attributes. Anything a normal GenAI instrumentation already sets is enough.
gen_ai.provider.name # e.g. "anthropic" or "openai"
gen_ai.request.model # e.g. "claude-opus-4-8" or "gpt-4o"
gen_ai.usage.input_tokens # integer
gen_ai.usage.output_tokens # integer
gen_ai.operation.name # e.g. "chat"
proxon.agent # optional, a per-span agent name that overrides OTEL_SERVICE_NAMEProxon reads only the usage attributes it needs to attribute cost. Everything else your spans carry is set by your own instrumentation. If you do not want prompt or response text leaving your environment, keep it out of the telemetry you export.
SDK or OpenTelemetry?
The Proxon SDK for Agents and OpenTelemetry do the same job in two ways. For a Node app you control, the Proxon SDK for Agents auto-instruments it with one line. For anything else, such as another language or a tool that already emits OpenTelemetry, use this OTLP path. Either one is enough on its own, and running both adds detail rather than new coverage. See the data collection overview for the full picture.