Skip to main content

Two layers, zero YAML

Observability is not something you declare in agents.yml — there’s no observability: section. It’s controlled entirely by environment variables, and one layer is always on:

Structured logging

Always active, regardless of any environment variable. Every run emits structured log lines at the engine’s key stages: run started, routing decisions, tool calls started/succeeded/failed, run ended. Use the --log-level flag to control verbosity:
This is a fixed part of the runtime — there’s nothing to turn on.

Langfuse tracing

Langfuse is an open-source LLM observability platform — traces, prompt/token usage, latency, per-agent breakdowns. Extra self-enables it the moment two environment variables are present:
.env
That’s the entire integration. No YAML, no code, no flag. Both keys must be present, or Langfuse stays off — there’s no partial state.
Using a self-hosted Langfuse instance instead of Langfuse Cloud? Add LANGFUSE_HOST alongside the two keys above — it’s read by the underlying Langfuse SDK the same way.

What happens if it’s misconfigured

If the two keys are set but the Langfuse client fails to initialize for any reason, Extra logs a warning and the engine keeps running without tracing — a broken Langfuse setup never breaks your agents.
This is the opposite failure mode from runtime hooks, which are fail-closed by default for anything security-critical. Observability failing open is deliberate — losing traces is acceptable; losing service to your customers is not.

Adding another backend

The engine’s observability layer is a small internal registry of callback providers — logging and Langfuse are the two currently wired in. There’s no plugin mechanism for adding a third-party backend from YAML today; that would require a code change to the engine itself, not a configuration change to your spec.