Skip to content

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.

Fanout runtime architecture: OTLP ingest and commit workers publish Parquet; the browser API, agent runtime, and MCP server share queries and dashboards, with DuckDB query state, SQLite control state, anomaly detection, and webhook alerts.
One process owns the complete path from OTLP ingest to investigation.

One binary and one data directory contain ingest, storage, queries and the browser client. Why one binary explains the operating tradeoffs.

PartWhat it does
OTLP ingestAccepts traces, logs and metrics on gRPC and HTTP
StorageAtomically publishes indexed Parquet batches to a local data directory
QueryDirect indexed trace reads plus in-process DuckDB SQL and rollups
AlertsEvaluates persisted rules on a fixed interval against rollups
AgentA chat agent working from the same typed query tools
MCP serverExposes those tools to an external agent
Browser clientServed by the same process, from the same binary

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.

See namespace access limits.

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.

Fanout is alpha. User-facing contracts can change without migration paths. The capabilities page lists each feature’s stability.