A self-hosted RSS reader for the open web. Follow any site, even ones without a feed.
Hyprfeed is a self-hosted, multi-user RSS reader that turns the sites you follow into a magazine. Paste any website URL and Hyprfeed discovers its feed. If the site doesn't publish one, it can watch the page itself and turn new articles into stories.
- Three view modes: magazine (lead story + mixed grid), cards, and a compact list; switch from the topbar, per-user preference remembered
- Feed auto-discovery: paste
example.comand Hyprfeed finds the RSS or Atom feed for you - Page watcher: follow sites with no feed at all: Hyprfeed detects new article links on the page and enriches each story with the article's own title, image, description, and publish date
- Built-in reader: clean, sanitized article view with reading-time
estimate and
j/kkeyboard navigation - Multi-user: private subscriptions, read state, and saved stories per account; email-based sign-in
- Admin panel: the first registered account becomes admin and can manage users, reset passwords, promote admins, and open/close registration at runtime
- Cloudflare Turnstile: optional bot protection on sign-in and sign-up
- Light & dark themes: follows your system or your choice, instant toggle
- Self-contained: Inter typeface embedded, no CDNs, no external services required, SQLite storage in a single Docker volume
-
Create a directory with this
docker-compose.yml(or download it:curl -O https://raw.githubusercontent.com/hyprlab/hyprfeed/main/docker-compose.yml):services: hyprfeed: image: hyprlab/hyprfeed:latest container_name: hyprfeed ports: # host:container. Change the left side if 8098 is taken on your host - "8098:8000" environment: # Session signing key. If unset, one is generated and kept in the data volume. - SECRET_KEY=${SECRET_KEY:-} # Cloudflare Turnstile (optional; leave empty to disable the challenge) - TURNSTILE_SITE_KEY=${TURNSTILE_SITE_KEY:-} - TURNSTILE_SECRET_KEY=${TURNSTILE_SECRET_KEY:-} # Set to 0 to close sign-ups (the admin panel can also toggle this at runtime) - ALLOW_REGISTRATION=${ALLOW_REGISTRATION:-1} # How often feeds refresh in the background, in minutes - REFRESH_MINUTES=${REFRESH_MINUTES:-15} # How many stories each feed keeps; older ones are pruned - MAX_ENTRIES_PER_FEED=${MAX_ENTRIES_PER_FEED:-300} volumes: - hyprfeed-data:/data restart: unless-stopped volumes: hyprfeed-data:
-
(Optional) add a
.envfile next to it to set any of the variables above (.env.example). Everything works with the defaults for a first run. -
Start it:
docker compose up -d
-
Open http://localhost:8098 and create your account. The first account registered becomes the admin, so register yourself before opening the instance to others (or set
ALLOW_REGISTRATION=0after you're in, or flip the toggle in Settings → Admin).
Note: the downloaded compose file pulls the published image
hyprlab/hyprfeed. If yougit clonethe repository instead, the includeddocker-compose.override.ymlmakesdocker compose up -d --buildbuild the image from your local source automatically.
docker compose pull && docker compose up -dSchema migrations run automatically on startup. Your data lives in the
hyprfeed-data volume and survives updates; backing it up is covered in
the documentation.
- Configuration, Turnstile, the page watcher, backups, running from source
- Contributing: commits, code conventions, credit
- Releasing: versioning and the release procedure
- Changelog, also shown in the app under Settings → About
Flask · SQLAlchemy · Flask-Login · feedparser · SQLite · gunicorn. No frontend framework and no CDN dependencies: the Inter variable font (SIL Open Font License) is bundled in the image.
Hyprfeed is built by a human maintainer who uses generative AI as a development tool. The maintainer decides what gets built, reviews the results, tests every release and signs off on everything that ships. The app itself contains no AI and makes no requests to AI services.
Hyprfeed is free software, released under the GNU Affero General Public License v3.0 (AGPL-3.0). You may run, study, share, and modify it. If you run a modified version as a network service, the AGPL requires you to offer its source code to your users, and the "Source" link in the app's settings makes that easy to satisfy.
© 2026 Hyprlab
