---
title: "Shipped vs planned"
summary: "Capability availability, contract stability and operating limits."
description: "What the current Fanout binary does, what runs but may still change shape, and what is only designed."
status: preview
read_when:
  - "You are deciding whether to build something durable on a Fanout capability."
  - "A page describes something and you want to know whether it executes today."
---
Fanout is alpha. User-facing contracts and storage formats can change without
migration paths. Every documentation page states one of these statuses:

| Marker | Meaning |
|---|---|
| `shipped` | Available with a settled contract. |
| `preview` | Available; the contract can change without a migration path. |
| `planned` | Designed but unavailable. |

`llms.txt` includes the status of every non-shipped page. A page covering several
capabilities uses `preview` if any of its contracts remain unsettled.

## Where each capability stands

| Capability | Status | Notes |
|---|---|---|
| OTLP ingest over gRPC and HTTP | shipped | Both transports, one port and one ingest token. |
| Parquet storage, trace indexes, and DuckDB analytics | preview | Authoritative local Parquet; rebuildable DuckDB query state. |
| Browser client | preview | Ships in the binary; preview contracts. |
| Built-in agent | preview | Disabled unless `FANOUT_AI_PROVIDER` selects `anthropic` or `openai`; the selected provider's key is required at startup. |
| Agent-built dashboards | preview | [Build and refine from chat](/docs/guides/dashboards): fifteen panel types, variables, comparison, saved grids and immutable versions with restore. View links retain filters and time; dashboard access remains owner-scoped. |
| MCP tools | preview | Served at `/mcp`; the tool set is not frozen. |
| Alerts | preview | Rules evaluate on an interval against rollups. |
| Local email sign-in | shipped | Codes by email; no passwords. |
| Local self-signup | preview | `FANOUT_SELF_SIGNUP`, off by default. Provisions viewers after code verification only. |
| OIDC account auto-provisioning | preview | Eligible identities receive the configured mapped or default role; the default is viewer. |
| OIDC sign-in | shipped | Provider flow, with group and domain mapping. |
| Generated settings reference | shipped | `cmd/fanout-docgen` writes it; `just check` fails when it drifts from the type. |
| Release checksums and provenance | shipped | `SHA256SUMS` plus GitHub build attestations on every archive. |
| Published ingest benchmark | shipped | [Performance](/docs/concepts/performance) reports v2026.10.8-alpha with three sweep repetitions and [raw evidence](https://github.com/labstack/fanout-bench/tree/main/published/2026-10-16-ccx33x2-v2026.10.8-alpha). |
| Signatures and SBOM | planned | Unavailable; see the [release contract](https://github.com/labstack/fanout/blob/main/docs/release.md#supply-chain-scope). |
| Namespace scoping on alert rules | planned | The field is stored but evaluation ignores it; scope with `service`. |

## Operating limits

- Namespaces filter queries. Anyone who can query an instance can query every namespace in it. Each instance is one trust domain; use separate instances for mutually untrusted teams. A namespace does not represent a user, organisation or tenant.
- **No horizontal scale.** Ingest, query and maintenance share one process and one machine.
- **Capacity depends on your workload.** Payload cardinality, query mix and disk determine capacity. The published benchmark measures one release, host and workload. [Measure your own hardware](/docs/concepts/performance).
- **No migration paths.** Fanout is pre-release. Storage-format changes may require a fresh data directory. Preserve backups before upgrading.

Keep a separate copy of data you need to retain.