I was tired of scrolling Facebook to knew about tech and AI news, and I was trying to install or use a RSS feeder, like FreshRSS or Miniflux for example, but there was always something that didn't convince me (for example, settings too complicated or account requiring systems).
So I built MeigRSS: a desktop RSS reader written in Rust and Svelte 5 that runs as a single binary, stores everything in a local SQLite file, and talks to whichever AI provider you already pay for, using your key, at your cost, with no subscription in between.
This post walks through what it does and, more importantly, where it is genuinely different from FreshRSS, Miniflux or Feeder.
Installation is one binary and no server
FreshRSS needs PHP and a web server. Miniflux needs PostgreSQL - there is no SQLite option. MeigRSS is an executable. You run it, it opens in your browser at localhost, and it creates a SQLite file next to itself. There is no database to provision, no web server to configure, no container to orchestrate, no reverse proxy, no certificates. SQLite is compiled into the binary, so there is nothing to install alongside it either.
Following sites that don't have a feed
Plenty of sites publish no RSS at all. FreshRSS solves this with XPath scraping: you open the developer tools, find the right nodes, and fill in five fields with complicated expressions. It is powerful and it works, but if you get a selector wrong you do not get an error - you get articles with garbage titles, and you go ask on a forum why.
MeigRSS takes a different bet: you paste the URL of the site and press Test. That's it. It reads the page, works out which links are articles by recognising the shape of their URLs, and tells you how many it found before you commit.
It recognises five date-based URL layouts observed across major publishers:
/2026/07/24/article-slug — zero-padded, the most common
/2026/7/24/article-slug — non-padded
/2026/jul/24/article-slug — three-letter month
/20260724-article-slug — compact date prefix
/2026-07-24/article-slug and /24-07-2026/article-slug — hyphenated
The trade-off is honest: this covers sites that put a date in the URL, which is most news sites and most blogs, but not sites with opaque slugs like /news/articles/c9370817nezo. XPath can theoretically scrape anything; this covers the common case with zero configuration. I chose the simplest solution, deliberately.
Web feeds work without paying for anything
Originally in the first version of the program web feeds required a rendering API - a paid service that runs a headless browser so JavaScript-built pages can be read.
Now the default is a plain HTTP GET, which costs nothing and works on any server-rendered site. If a site builds its article list client-side with JavaScript, you can enable a rendering API per feed (Scrape.do, ScraperAPI, ScrapingBee and similar are supported) and only those feeds consume credits.
Free where possible, paid only where genuinely necessary.
AI summaries with your own key, no subscription
Every article can be summarised by an LLM. You choose the provider and paste your own API key:
Mistral (Small or Large) - the Small tier has a free plan that comfortably covers personal use
OpenAI
Anthropic Claude
Google Gemini
The comparison worth making: Feedly Pro+ with its AI assistant runs about $12.99/month, Inoreader Pro about $9.99/month, and NewsBlur's premium archive around $99/year. MeigRSS charges nothing and you pay the provider for exactly the tokens you use - which, for summarising a few dozen articles a day with a cheap model tier, is cents. And if you are using Mistral, like i do, for creating 2-3 summeries per day, it's totally free (for now).
Summaries can be generated on demand or forced automatically per feed, so you can keep the expensive behaviour on the three feeds you actually read closely.
Your API keys are encrypted at rest
Most readers store third-party keys in plain text in a config file or in browser storage. MeigRSS encrypts them with AES-256-GCM before writing them to the database, with the encryption key held in a separate file with restrictive permissions, or supplied by you through an environment variable.
The key is decrypted in memory only when a request is actually made. It is never sent to the frontend - the settings page shows a masked value like sk-a...f456. That means the plaintext key exists in exactly two places: your clipboard when you paste it, and the backend process when it calls the provider.
Newsletters become articles
Some articles or news arrive by email rather than RSS. Hosted readers solve this by giving you a dedicated address - which means your newsletters pass through their servers.
MeigRSS imports .eml files directly. You export the email from your client, drop it in, and it becomes an article in your reader, rendered with its original HTML and images intact inside a sandboxed frame that cannot run scripts or reach the application's own API. Imported newsletters are automatically flagged as favourites so the retention policy never deletes them.
Full-text extraction for truncated feeds
Plenty of feeds ship two sentences and a "read more" link. Enable scraping on a feed and MeigRSS fetches the article page and extracts the readable content using Mozilla's Readability algorithm, the same approach behind Firefox Reader View. Useful also if the link article goes broken, so you can have the text into your system and it's not gone forever. That full text is also what gets sent to the AI when you ask for a summary, so summaries of truncated feeds are actually based on the article rather than its teaser.
Retention instead of an archive
MeigRSS is built around a rolling window rather than a permanent archive. You choose how long articles live and anything older is purged automatically. Anything you mark as a favourite is exempt and kept indefinitely.
This is a genuine design difference, not an omission. I wanted a reader that behaves like a newspaper rather than a library, and does not grow without bound on my disk.
The rest of it, briefly
Categories to organise feeds, with per-feed options for pausing, forcing AI summaries and enabling scraping.
Highlight words: define terms you care about and they are visually marked wherever they appear in titles and summaries.
Search across your stored articles.
Automatic refresh on a schedule you pick, or on demand.
Import and export in both OPML and JSON. OPML is the universal interchange format, so you can bring your subscriptions in from any other reader and take them out again whenever you like. JSON is the full-fidelity backup: it carries favourites, settings and per-feed configuration that OPML has no place for.
Six languages: Italian, English, French, German, Spanish and Portuguese. Langauges were chosen based by Mistral supported languages (european languages), so the API call for that specific AI is working without problems.
Cross-platform: Windows, Linux and macOS, from the same codebase.
What it does not do
I would rather you find this out here than after downloading or installing.
There is no sync and no mobile app. This is the real difference with FreshRSS and Miniflux, which both speak the Google Reader API and therefore work with Reeder, NetNewsWire, FeedMe and most native clients. MeigRSS reads on the machine it runs on. If your phone is your primary reading device, this is not the tool for you today.
It is single-user. FreshRSS handles multiple accounts; this does not.
Web feeds need a date in the URL. Sites with opaque identifiers are out of reach by design.
Stack
Rust with Axum for the backend, Svelte 5 with SvelteKit for the frontend.
For all information about the project:
GiulioMagini
/
MeigRSS
MeigRSS is a local news aggregator with AI-powered summaries. It collects articles from configured RSS feeds, newsletter (EML files) and web feed (with external API or GET call from the program); extracts full text on demand, and generates summaries via AI APIs (Mistral, OpenAI, Claude, Gemini).
MeigRSS
Your personal news feed aggregator, with AI summaries - running on your own machine.
MeigRSS is a local news aggregator with AI-powered summaries. It collects articles from configured RSS feeds, newsletter (EML files) and web feed (with GET request from the program or external API if the site blocks GET requests); extracts full text on demand, and generates summaries via AI APIs (Mistral, OpenAI, Claude, Gemini).
IMPORTANT: The software author does not endorse the use of the site scaping feature for small hosts, and suggest to use it only for high-traffic news sites with no RSS.
🤔 Why using MeigRSS?
FreshRSS and Miniflux read feeds, MeigRSS also reads what a feed doesn't have: it turns sites that don't display one into feeds, as well as newsletters you receive via email (import .eml files, even entire folders). Each article can be summarized by AI, and the full…
MIT License, open-source. If you are only insterested in the Windows exe file, you can check the release page (7z file).
In the README.MD file you can also find the youtube link to the explanation video.








Top comments (0)