尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Privacy-first RSS reader — local-first, encrypted, self-hostable
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗A privacy-first RSS reader that runs entirely in your browser. No accounts, no tracking, no analytics — your reading habits stay yours.
Hosted — open my.feedzero.app. Nothing to install.
Run your own — one Docker command:
docker run -p 3000:3000 -v feedzero:/data ghcr.io/forcingfx/feedzero:latest
Open http://localhost:3000. Data persists in the feedzero volume; the image is on GitHub Packages.
Run it on a server with your own domain and automatic HTTPS — see Self-hosting (a Compose stack with Caddy, three commands).
Either self-host path unlocks every Personal feature for free.
FeedZero minimizes server-side data exposure:
| Component | What the server sees |
|---|---|
| Feed fetching | Feed URLs (required for CORS proxy) |
| Cloud sync | Encrypted blob + vault ID (cannot decrypt without your passphrase) |
| Everything else | Nothing — parsing, storage, and rendering happen in-browser |
No telemetry. No analytics. No crash reporting. No third-party tracking.
For the full threat model, cryptographic details, and honest limitations, see docs/architecture.md.
The CORS proxy is a trust point. It must see feed URLs to fetch them. If you don't trust the hosted version, run your own — the entire stack is one binary.
Paste any URL into the "Add feed" input:
https://example.com/feed.xml| Key | Action |
|---|---|
j / k | Next / previous item |
Enter | Open selected item |
Escape | Go back |
Your passphrase never leaves your browser. The server stores only encrypted blobs.
npm install # install dependencies
npm run dev # dev server at http://localhost:3000
npm test # Unit/integration tests (Vitest)
npm run test:watch # Watch mode
npm run test:coverage # Coverage report (90% threshold)
npm run test:e2e # E2E tests (Playwright)
npx tsc --noEmit # Type check
src/
├── core/ # Framework-agnostic business logic
│ ├── feeds/ # Feed fetching, parsing, refresh
│ ├── parser/ # RSS/Atom/JSON Feed parsing
│ ├── storage/ # IndexedDB + encryption
│ ├── sync/ # E2E encrypted cloud sync
│ └── extractor/ # Full-text extraction
├── stores/ # Zustand state management
├── components/ # React UI components
└── pages/ # Route components
See docs/architecture.md for detailed architecture documentation.
FeedZero is built as a sustainable business, not a venture-funded runway. The category around us has gotten brutal — Pocket shut down November 2025, Omnivore November 2024, Tiny Tiny RSS's original maintainer retired the project the same month, Artifact closed January 2024. Each of those services took user data with them.
The structural commitments that keep FeedZero around:
If you're migrating from a product that just shut down, you're welcome here. We'll still be here when the next one does.
Found a vulnerability? See SECURITY.md for reporting guidelines.
See CONTRIBUTING.md for development workflow and guidelines.
AGPL-3.0-or-later. See LICENSE for the full text.
If you run a modified version of FeedZero as a public-facing service, section 13 of the AGPL requires you to offer your users access to the source of that modified version. The default deployment satisfies this out of the box because the source is already public — for any fork, host the diff somewhere your users can reach.