Meridian is the reference desktop client for the MMSP protocol and its MFEED JSON feed format - a modern, structured alternative to RSS. Full support for RSS, Atom, podcast, and YouTube feeds included for backwards compatibility.
MMSP (MultiMedia Subscription Protocol) is a modern, open standard for feed subscription - structured, JSON-native, and designed for clarity where RSS/Atom have accumulated decades of cruft. MFEED is the JSON feed format that implements it.
Meridian is the reference desktop client: it parses MFEED natively, enforces MMSP polling semantics (conditional GET, 300 s floor, MMSP/1.0 User-Agent), and applies MMSP Appendix A ABNF filter expressions per-feed. RSS, Atom, podcast, and YouTube support is included so you can subscribe to everything in one place while MFEED adoption grows.
Read the MMSP SpecificationMMSP-native from the ground up, with full compatibility for every major feed format you already use.
Parses MFEED (MMSP JSON format) natively. Enforces MMSP/1.0 User-Agent, conditional GET (ETag / Last-Modified), and the 300 s poll floor per the spec. Read the spec →
Search new feeds by topic via feedsearch.dev. 46 category autocomplete, result cap selector (10 to 200), and bulk subscribe with a confirmation dialog.
Per-feed MMSP Appendix A ABNF filters. The filter dialog surfaces existing terms as toggleable rows - no syntax knowledge required for common cases.
Conditional GET with ETag and Last-Modified. Rate-limit backoff, 300 s poll floor. Async asyncio scheduler - zero CPU when no feeds are due.
Mocha (dark) and Latte (light) with a single toggle. Theme preference persists across restarts. Amber focus ring on every focusable control.
content:encoded preferred over description so full article HTML is shown where available. Media player for podcast and video items built in.
Every control reachable without a mouse. Tab wraps cleanly end-to-end. Enter, Space, Left, Right all wired. Escape closes drawers and dialogs.
Full subscription round-trip via JSON. A curated feeds_export.json ships with the repo so you can bootstrap a reading list in seconds.
Select-all checkboxes, bulk remove, per-feed filter, edit, and delete from the subscription manager. In-place list removal preserves scroll position.
No account, no cloud, no server. Your subscriptions and read state stay on your machine. JSON export/import moves them between machines - the migration path, not live sync.
A reference client has to be exemplary or the spec it implements loses authority. So MMSP polling semantics sit behind a pure domain, inside a four-layer architecture, UI to Application to Domain with Infrastructure implementing inward. AST tests and 100% branch coverage run on every build, so the behaviour the spec mandates is behaviour the code cannot structurally violate.
Recent releases have focused on keyboard navigation completeness, theme persistence, and feed discovery from the app itself.
Pre-built installers for Windows, macOS, and Linux on the Releases page. Or run from source in three commands.
Download the latest installer for your platform from the GitHub Releases page - no Python required. Windows ships as MeridianSetup.exe, macOS as a DMG, Linux as a Flatpak. All built with PyInstaller and ship everything bundled.
LGPL-3.0 licence. Built with Python, PySide6, Qt Quick, SQLAlchemy, and httpx.
# Clone and set up git clone https://github.com/oernster/meridian cd meridian python -m venv venv # Activate (Windows) venv\Scripts\activate # Activate (macOS / Linux) source venv/bin/activate # Install and run pip install -r requirements.txt python -m meridian.main