RSSMonster

Three-pane reader: folders and feeds on the left, unread articles sorted by recommendation in the middle, the open article on the right.

A chronological RSS inbox with an optional analysis layer

RSSMonster is a self-hosted RSS reader built on Node.js and Vue 3. On its own it reads like any feed reader, with date order, a three-pane layout or a stream of full articles. Switch on semantic processing and RSSMonster goes to work on what has already arrived: it flags duplicates, gathers reports of the same occurrence and ranks the rest by personal interest or by how widely a story is covered. Each account keeps its own subscriptions and reading state. The server runs under Docker Compose with SQLite or MySQL, and an Electron desktop app covers Windows, macOS and Linux.

Story grouping and rankings that show their signals

  • Events: by default, two matching articles are enough to start an Event, and a server setting can require them to come from at least two feeds. Duplicate detection is a separate pass that tells a syndicated copy from another outlet's own reporting.
  • Rankings you can question: Recommended works from interests learned through reading feedback (Interest Islands), which can be inspected and muted. Top Stories lifts stories with broad source support. The signals behind a ranking are shown, and the docs say plainly that neither the quality score nor FeedTrust is fact-checking.
  • Smart Folders and actions: a search such as @today unread:true sort:desc becomes a folder that keeps filling itself. Actions run regular expressions over incoming articles to tag, mark read, hide or rescore them.
  • Pages with no feed: an HTML + XPath feed pulls titles, links, content and dates out of a server-rendered page, with a preview before saving.
  • Clients and generated feeds: OPML import and export, Fever and Google Reader APIs (Fever sends only one copy of each known duplicate), private token-protected RSS feeds built from a search, and an MCP endpoint (/mcp, JWT bearer) for AI agents.

Events need an inference service, and the Docker image follows master

Events depend on an inference service. They are matched primarily on embedding similarity, and an article without an embedding never joins one. The SQLite profile started by docker compose up -d leaves embeddings, classification and the assistant switched off. The comprehensive profile adds MySQL 8.4, an inference service and an AI worker, then downloads Qwen3, Qwen3.5 and ModernBERT on first start; none of them needs an OpenAI key. The SQLite profile can call a remote inference service instead.

Aimed at large, overlapping feed collections. The project's own comparison page targets readers whose problem is no longer subscribing to feeds but making sense of what those feeds produce. It sends other readers elsewhere: Miniflux for minimal reading, FreshRSS for maturity and extensions, Feedbin for a managed service.

Docker images are built from master and carry no version tag. On Docker Hub, rssmonster/rssmonster has latest plus one sha- tag per commit. latest is rebuilt whenever a master commit passes CI. The docs tell production users to pin a sha- tag, because an unpinned docker compose pull can replace the application and run database migrations.

Latest release: 2.3.0, September 9, 2026. It is the sixth release since August 1, and the most recent commit landed on October 25. Master is preparing 2.4.0 (OpenID Connect, webhooks, offline reading), which the README and docs already describe. The lead maintainer has 2,066 commits; the next human contributor has 15. Security fixes go to the latest release only, and the private reporting address in the security policy is still a <your-email> placeholder. The 2.3.0 desktop app refreshes feeds by hand, has no AI features and ships unsigned installers.