BETA. Reed is public and usable today, but pre-1.0.0. Expect breaking changes before the v1.0.0 tag. See Roadmap to v1.0.0 below for what's left.
A self-hosted, open-source RSS reader with a graph-native data model, public REST API, and first-class MCP server.
Reed is a single-user, self-hosted RSS reader built for simplicity and developer access. It uses a graph database (Kuzu) to model relationships between feeds, articles, authors, topics, and tags — making it traversable by AI tools via a built-in MCP server.
My daily reading routine runs through an AI-assisted second brain, and RSS never fit into it cleanly. The reader I was using kept decent API access behind a paid tier, and even then, its data model — and every competitor's, FOSS or commercial — was a flat list of articles. None of them were built with AI clients as a first-class consumer, so there was no way to hand an agent something richer than "here are some unread items."
Reed exists to fix that. Feeds, articles, authors, topics, and tags are nodes and edges in a graph, not rows in a table, so an AI client can traverse relationships — hop from an item to its topics, to related topics, to related items across other feeds — instead of just paging through a list. It started as a weekend prototype and has grown into a daily driver.
Public beta, pre-1.0.0. Milestones M0 through M6 are complete: foundation, walking skeleton, usable reader, migration-ready, graph alive (topic extraction, similarity graph), full API and integrations (share sheet, export/import, topics API), and a 27-tool MCP server exposing the whole graph to AI clients over stdio and HTTP. See docs/roadmap/milestones.md for the live status, and the roadmap sections below for what's left before v1.0.0.
- Simple, fast RSS reading UI
- Fully public REST API (first-class, not an afterthought)
- MCP server for AI client integration and graph traversal
- Single-user, self-hosted — no SaaS, no cloud service
- Zero operational overhead — one
docker-compose upto run
- Python — application language across all components
- Kuzu — embedded graph database
- FastAPI — REST API and OpenAPI documentation
- FastMCP — MCP server
- Vue 3 + Vite — web UI (three-pane reader, keyboard-first)
- Docker Compose — primary distribution and deployment
Reed is not yet published as a versioned release — the Docker image on GHCR and the PyPI package land with v1.0.0. Until then, run it from source:
git clone https://github.com/simonives/reed
cd reed
pip install -e .
reed serveOr build the Docker image locally (matching the tag docker-compose.yml expects, so docker compose up picks it up without edits):
git clone https://github.com/simonives/reed
cd reed
docker build -t ghcr.io/simonives/reed:latest .
cp .env.example .env # add your REED_API_KEY
docker compose upEither way, set a real REED_API_KEY before starting — see .env.example and CONTRIBUTING.md for local development setup.
What's left before the beta label comes off:
- Website: a live project site with quickstart and installation instructions, served via GitHub Pages.
- Distribution polish: the release pipeline is built and dry-run verified, but no real
v1.0.0tag has been pushed yet. - Public-hosting auth review: the current single-static-API-key auth model was designed for a LAN-bound, self-hosted deployment. Before v1.0.0 formally endorses public cloud hosting (Railway, Render, Fly.io), that model needs a dedicated review, tracked as its own GitHub issue.
Track live progress in docs/roadmap/milestones.md and the repository's Issues and Milestones.
Ideas already scoped for consideration after the initial release. None are commitments yet.
- User-maintained watch lists: a standing set of topics or descriptions of interest that flags new incoming items matching those concerns, independent of which feed or topic-extraction path they arrived through.
- Saved graph traversal views: named, reusable graph queries beyond the current ad hoc traversal tools.
- Author and co-authorship modelling: treating authors as first-class graph entities with their own relationships, not just item metadata.
- Scheduled discovery: an opt-in feature to periodically scan for new content beyond the feeds a user already subscribes to, rather than being limited to what has already been ingested.
See docs/roadmap/open-decisions.md in the repository for the full design-question backlog these are drawn from.
AGPL v3