Two layers, zero YAML
Observability is not something you declare inagents.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:
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
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.