What Fanout is
Fanout is a self-hosted OpenTelemetry backend for agent investigations. Ask its built-in agent a question about traces, logs or metrics, or connect your own agent over MCP. Both use the same typed tools to inspect telemetry and build dashboards.
One Go process accepts OTLP over gRPC and HTTP, stores telemetry in local Parquet, runs DuckDB analytics, evaluates alert rules and serves the browser client. The built-in agent requires a configured AI provider; external MCP clients use their own model provider.
One binary and one data directory contain ingest, storage, queries and the browser client. Why one binary explains the operating tradeoffs.
What it contains
Section titled “What it contains”| Part | What it does |
|---|---|
| OTLP ingest | Accepts traces, logs and metrics on gRPC and HTTP |
| Storage | Atomically publishes indexed Parquet batches to a local data directory |
| Query | Direct indexed trace reads plus in-process DuckDB SQL and rollups |
| Alerts | Evaluates persisted rules on a fixed interval against rollups |
| Agent | A chat agent working from the same typed query tools |
| MCP server | Exposes those tools to an external agent |
| Browser client | Served by the same process, from the same binary |
Deployment boundaries
Section titled “Deployment boundaries”SDKs and Collectors export to Fanout as their telemetry backend. Fanout runs on one machine with local storage. It has no clustering, replication or object tier.
Who it is for
Section titled “Who it is for”Teams that want their telemetry on their own hardware, with a small enough operational surface that observability does not become its own on-call rotation. The reference deployment target is a single small VM.
Stability
Section titled “Stability”Fanout is alpha. User-facing contracts can change without migration paths. The capabilities page lists each feature’s stability.