Skip to main content

How it works

OpenTelemetry (OTel) ingestion is built directly into the Muster backend. There is no sidecar connector to deploy — your agents export traces straight to your Muster instance over HTTPS. This gives full coverage across:
  • Any language (Python, Go, Java, Node.js, Rust)
  • Any framework with OTel support (LangChain, CrewAI, LlamaIndex, custom agents)
  • Agents that don’t have a dedicated Muster connector

What your developers do

Set three environment variables on your agent. That’s it.
Get the JWT by calling POST /auth/login with a service account user, or copy it from your Muster dashboard → Settings → API Access. No code changes are required if your agent already emits OTel spans.

Adding OTel to a Python agent

If your agent doesn’t yet emit OTel spans, add instrumentation once at startup:
The service.name attribute becomes the agent name in Muster. New service names are auto-added to your Discovery queue for review.

LangChain — zero-code instrumentation

If you use LangChain, one line enables automatic tracing of all chains and agents:
Then set the three env vars above and Muster receives full trace data immediately.

Check connection status

Returns current connector status, executions received in the last 24 hours, and the exact env vars to use for your instance.

What Muster does automatically

Once traces arrive:

Supported semantic conventions


Supported agent span names

Muster identifies root agent executions from these span names (partial match): agent.run, agent.execute, agent.invoke, langchain.chain, langchain.agent, crewai.task, crewai.agent, openai.chat, anthropic.messages, bedrock.invoke, llm.completion, chain.run, tool.run To add custom span names, contact Elitery.

Why OTel instead of a platform connector?

Use OTel for custom-coded agents. Use platform connectors for no-code/low-code tools where you can’t set env vars.