Quickstart
In about five minutes: install NavFlow, get events from a real system flowing into one correlated timeline, and connect an agent that reads it.
Start NavFlow
pip / uv (local)
uv tool install navflow # or: pipx install navflow
navflow up # daemon + console on http://localhost:8787Open the console at http://localhost:8787 — an empty Sources page, waiting for the next step.
Add a source
Demo stack (fastest)
The demo is a self-contained stack — a small api-server, Prometheus, and a traffic generator — plus a catalog that wires up three correlated sources, a view, and two triggers. Two files, no checkout. Start the stack NavFlow will ingest from:
curl -O https://raw.githubusercontent.com/glassflow/navflow/main/demo/docker-compose.yml
docker compose up -dStop the daemon from the first step (Ctrl-C) and restart it seeded with the demo catalog:
curl -O https://raw.githubusercontent.com/glassflow/navflow/main/demo/catalog.demo.yaml
NAVFLOW_CATALOG=catalog.demo.yaml navflow upThe startup log confirms the import: imported catalog.demo.yaml into catalog (3 sources, 1 views, 2 triggers).
The catalog imports only while your catalog is still empty — fine here, since you haven’t created
anything yet. If you have (say, you tried the other tab first), the import is skipped silently;
restart on a fresh data directory instead:
NAVFLOW_CATALOG=catalog.demo.yaml navflow up --data-dir ~/navflow-demo
Open Explore, pick the api-server entity, and watch metrics, logs, and alerts merge into one
timeline. To break it on purpose and watch the triggers fire, see
Run the demo stack.
(Prefer no catalog at all? Sources → Discover proposes sources from your running containers — the catalog just pre-wires the correlated view and the triggers.)
Connect an agent
Agents read NavFlow over MCP. Start the MCP endpoint — a second process that proxies to
the daemon (skip this if you’re on the Docker compose; it’s already running on :8788):
navflow mcp --transport streamable-http --port 8788 --navflowd http://localhost:8787Point Claude Code at it:
claude mcp add --transport http navflow http://localhost:8788/mcp
claude mcp list # navflow: connectedLocally there’s no auth, so the connect command needs no token; on a
deployed instance that sets NAVFLOW_AUTH_TOKEN, add
--header "Authorization: Bearer <token>".
In a Claude Code session:
Use navflow: list my sources and summarize what each one contains.
The agent calls the MCP tools (list_sources, catalog_describe, query, …) against the daemon.
For other clients (Codex, Claude Desktop), transports, and the full tool list, see
Connecting agents.
Verify
In the console, Agents → Reads lists each read as it happens, with client = mcp.
Next
- Run the demo stack — cause an incident and watch the triggers fire.
- Concepts — the data model.
- Connectors — Vercel, Postgres, Prometheus, OTLP, Claude Code sessions, and more.
- Deployment — self-host the daemon, MCP server, and TLS with Docker.