agentc
GitHubagentc-sh/agentc
agentc
GitHubagentc-sh/agentc
›Introduction
Get started›Concepts in 5 minutes›Build your first agent›Add your first tool›Serve and connect
Concepts›Architecture overview›The manifest›The compilation pipeline›Archetypes›The graph›Tools and capabilities›Runtime libraries›Skills›Agents and prompts›Serving and protocols›Observability
Guides›Author a manifest›Write a tool›Give your agent a filesystem›Control network egress›Connect external tools via MCP›Connect agents via A2A›Use the bash tool›Control tool access with capabilities›Write templated prompts›Manage prompts with Langfuse›Pass context from the client›Configure a model provider›Connect a CopilotKit frontend›Deploy a standalone binary›Deploy with Docker and PostgreSQL›Instrument with OpenTelemetry›Extend code generation with blocks
Reference
Manifest
Runtime
›Observability

Observability

What agentc instruments out of the box and why it matters in production.

agentc agents are instrumented out of the box. Every run, graph step, model call, and tool execution produces structured logs and traces without any code on your part. Observability is configured entirely through environment variables at startup, so you turn it on per deployment without changing the manifest or recompiling.

The signals an agent emits

An agent emits several kinds of operational signal, each answering a different question.

Logs answer "what happened." The agent writes structured JSON logs to standard output at a configurable level, which is the first place to look when you want a running narrative of a process.

Traces answer "where did the time go, and what led to what." Every significant operation produces a span. Model spans include rendered system instructions, ordered input, completed output, and token usage when the provider reports it. Local tool spans include arguments and successful results. Spans are nested, so you can follow the full causal chain of a run and see exactly which tool call or model request dominated a slow response.

Metrics answer "how much, and how often." Aggregated measurements such as request counts, durations, and token usage are recorded so you can chart throughput, latency, and cost over time rather than reasoning from individual runs.

Errors answer "what broke, and where." Optional error reporting captures unhandled errors and panics and sends them to an error-tracking service, tagged with the agent version and environment.

Everything exports over OTLP

Logs, traces, and metrics are all exported using OpenTelemetry over OTLP, the OpenTelemetry line protocol. You point the agent at a single OTLP endpoint and all three signals flow there. The natural target is an OpenTelemetry Collector, which receives the telemetry and routes each signal onward to whatever backends you use, for example Jaeger or Grafana Tempo for traces, Prometheus for metrics, and a log store for logs. Any OTLP-compatible backend works, so you can also send directly to a vendor such as Honeycomb or Datadog without a collector in between.

Trace content and data handling

When OTLP export is enabled, model and tool content is included in exported traces. Prompts, messages, media, tool arguments, and tool results may contain secrets or personally identifiable information. Multimodal input and long contexts can also increase trace volume substantially.

The invoke_agent span includes two views of the run. The portable view contains the input messages and final completed response using the OpenTelemetry GenAI message schema. The exact agentc view contains the complete graph input and terminal outcome, including the resulting state for completed, interrupted, and cancelled runs. Exact state can contain model configuration, capability overrides, context variables, tool definitions, arbitrary context, and conversation history, so it can be larger and more sensitive than the portable message view.

Production deployments should account for backend retention, access control, trace volume, and cost. An OpenTelemetry Collector can remove content attributes before traces leave your infrastructure.

Why it matters

An agent in production is a long-running system that calls out to models and tools you do not control. When a run is slow, loops, or fails, prose logs alone rarely tell you why. Nested traces show the shape of a run at a glance, token counts make cost and context growth visible, and error reports surface the failures that would otherwise be buried in log volume. Because all of this is on by default and driven by environment variables, a production deployment gets it for free and a local run stays quiet until you ask for more.

Where to go next

  • Instrument with OpenTelemetry: export traces, metrics, and logs to a backend.
  • Observability reference: every environment variable that configures logging, tracing, and error reporting.
← PreviousServing and protocolsNext →Author a manifest

© 2026 pogue.dev. All rights reserved.

Creative CommonsCC BY 4.0
On this pageThe signals an agent emitsEverything exports over OTLPTrace content and data handlingWhy it mattersWhere to go next

Search docs

Search the agentc documentation