A beautiful, modern terminal RSS feed reader powered by Textual.
The fastest way to get started:
pipx install rss-cli
rssUse pipx or uv to install as a standalone CLI tool without affecting your global Python environment.
# Using pipx
pipx install rss-cli
# Using uv (fastest)
uv tool install rss-clipip install rss-cligit clone https://github.com/MohammedSaudAlsahli/rss-cli.git
cd rss-cli
uv sync
uv run rss- 🎨 Beautiful TUI — Polished terminal interface with mouse & keyboard support.
- 🔍 RSS Marketplace — Discover new feeds by category or search (Tech, Programming, AI, etc.).
- 🌐 Reddit & Twitter/X — Built-in support for subreddit feeds and Nitter (Twitter) instances.
- 📄 Full Article Fetch — Fetch and convert web articles to clean Markdown directly in the terminal.
- 📖 Tabs & Filtering — Quickly switch between All, RSS, Reddit, Twitter, and Bookmarks.
- ⚡ Parallel Fetching — Blazing fast feed updates using async httpx.
- 🌓 Theme Support — Cycle through multiple dark/light themes with a single keypress.
- 📥 Article Numbering & Pagination — Never lose your place in large feeds.
rssThis launches the full terminal UI where you can:
| Key | Action |
|---|---|
Enter |
Read selected article |
f |
Fetch full article from the web |
o |
Open article in browser |
b |
Toggle bookmark |
n / p |
Next / previous article (in reader) |
a |
Add new feed |
m |
Open RSS marketplace |
d |
Delete a feed |
s |
Search articles |
r |
Refresh feeds |
t |
Cycle theme |
Esc |
Go back |
q |
Quit |
? |
Help |
rss add <url> # Add a feed
rss remove <url> # Remove a feed
rss list # List all feeds
rss refresh # Fetch all feeds
rss read # Launch the TUI
rss --version # Show versionThe left panel has tabs to filter articles by source type:
- All — Every article from all feeds
- RSS — Standard RSS/Atom feeds
- Reddit — Reddit subreddit feeds (auto-detected from URL)
- Twitter — Nitter/Twitter feeds (auto-detected from URL)
- Bookmarks — Your saved articles
Press m to open the marketplace where you can:
- Browse curated categories (Tech, Programming, AI, Science, etc.)
- Search for feeds by keyword
- See subscriber counts for each feed
- Press
Enterto subscribe instantly
When an RSS feed only provides a short snippet, press f in the article reader to:
- Fetch the full web page
- Extract the main article content using readability-lxml
- Convert HTML to Markdown for beautiful terminal rendering
- Cache the result for the session
Config and data are stored in XDG-compliant directories:
- Config:
~/.config/rss-cli/ - Cache:
~/.cache/rss-cli/ - Data:
~/.local/share/rss-cli/
Create ~/.config/rss-cli/config.toml:
[settings]
cache_ttl_seconds = 1800 # Cache duration (default: 30 min)
max_articles_per_feed = 200 # Max articles per feed
[twitter]
nitter_instances = [
"nitter.net",
"xcancel.com",
"nitter.poast.org",
"nitter.privacyredirect.com",
]RSS feeds:
rss add https://news.ycombinator.com/rssReddit subreddits (auto-detected):
rss add https://www.reddit.com/r/python/.rssTwitter/X via Nitter (auto-detected):
rss add https://nitter.net/elonmusk/rss- Hacker News — Tech news
- BBC News — World news
- TechCrunch — Tech startup news
- The Verge — Technology and culture
- r/Python — Python community
- r/Programming — Programming discussion
Find more in the built-in marketplace (press m) or at rss.com/blog/popular-rss-feeds.
# Install dependencies
uv sync
# Run tests
uv run pytest
# Run linter
uv run ruff check .
# Type check
uv run mypy rss_cli
# Run the app
uv run rss- Source-type tabs — Filter articles by All, RSS, Reddit, Twitter, Bookmarks
- RSS Marketplace — Discover and subscribe to feeds by category or search
- Full article fetch — Press
fto fetch full article content from the web - HTML → Markdown — Rich rendering with headings, links, lists, code blocks
- Article pagination — Browse 25 articles at a time with "Load more"
- Article numbering — See position like
1/62in the article list - Refresh notifications — "Refreshing feeds…" → "✓ Refreshed X feeds · Y articles"
- DateTime fix — All datetimes are UTC-aware, preventing comparison errors
- max_articles_per_feed raised from 50 to 200
- Reddit and Twitter/X feed support with Nitter fallback
- Async feed fetching with httpx
- OOP refactor — CSS, themes, utils, dialogs extracted
- Initial release
MIT © Mohammed Alsahli