Your feeds. Your rules. Zero noise.
A self-hosted, open-source RSS reader built for calm, focused reading.
Fast feeds. Clean layouts. No clutter. Your data stays yours.
LibreRSS is a self-hosted RSS reader you run on your own server. Subscribe to any RSS or Atom feed, organize sources into categories, and read distraction-free articles — all from a single dashboard you fully control.
It also speaks the GReader API, so native clients like NetNewsWire and Reeder connect without any plugins or adapters.
| Feature | Description | |
|---|---|---|
| 📡 | Universal feed support | Subscribe to any RSS, Atom, or JSON feed |
| 🗂️ | Category organization | Group feeds however makes sense to you |
| 🧘 | Distraction-free reading | Clean article view, no clutter |
| 🔗 | GReader API | Works natively with NetNewsWire, Reeder, and more |
| 🌙 | Dark & light mode | Looks great either way |
| 🔒 | Self-hosted | Your data stays on your server, always |
| 🚪 | Invite-only mode | Disable public signup whenever you want |
| ⚡ | Streaming refresh | Feeds update in real time via server-sent events |
bun installThis repo ships with a committed .env containing sane defaults. Create .env.local at the project root for machine-specific overrides:
DATABASE_URL="postgres://user:password@host:5432/dbname"
ALLOW_SIGNUP="false"
NODE_ENV="development"
LOG_LEVEL="warn"bun run db:provisionVerifies your connection and applies the full schema in one shot.
bun devOpen http://localhost:3000 and you're reading.
GReader clients — point them at
http://localhost:3000/api/greader.php
| Layer | Technology |
|---|---|
| ⚡ Framework | Next.js 16 · React 19 · TypeScript 5 |
| 🎨 UI | Tailwind CSS v4 · shadcn/ui · Radix UI · Lucide Icons |
| 🗄️ Database | PostgreSQL · Drizzle ORM |
| 🏎️ Runtime | Bun |
| Command | Description |
|---|---|
bun run db:provision |
Verify connection and apply full schema |
bun run db:push |
Push schema changes directly (no migration files) |
bun run db:generate |
Generate SQL migration files via Drizzle Kit |
bun run db:studio |
Open Drizzle Studio in the browser |
When public signup is disabled, create accounts directly from the CLI:
bun run create-user <email> <password>Inserts a user into the database. Password must be at least 8 characters.
librerss/
├── src/
│ ├── app/
│ │ ├── api/ # Feed, article, and GReader API routes
│ │ ├── dashboard/ # Main reader UI
│ │ └── landing/ # Marketing / login page
│ └── lib/
│ ├── db/ # Drizzle schema and database client
│ └── api/ # Service layer
├── scripts/ # CLI utilities (provision, create-user, check)
└── public/ # Static assets
Made with ❤️ by Evan Schoffstall
MIT License · Free forever · Self-host it