A blazing-fast, keyboard-driven RSS/Atom reader for your terminal.
FeedSH lets you follow feeds, catch up on unread articles, and read full content, all without leaving the shell. Built for speed, minimal resource use, and a distraction-free reading experience.
Add feeds without restarting: press a to open the RSS/Atom URL overlay, paste
a link, and press Enter. Successfully added feeds are saved locally and loaded
on future launches.
- Three-pane terminal interface for feeds, article lists, and article reading.
- Keyboard-first navigation with Vim-style
h/j/k/lshortcuts and arrow-key support. - RSS feed fetching, parsing, refresh, HTTP error reporting, and an in-memory response cache.
- Add RSS/Atom URLs from an overlay without restarting; duplicate and invalid URLs are rejected.
- Persistent user-added feed list stored locally as a readable JSON file.
- Read indicators and session-only article starring.
- Article metadata, HTML-to-text reader content, links, and compatible-terminal image rendering.
- One or more startup feeds supplied with
--feed; useful defaults when no URL is supplied. - OPML import and export for moving subscriptions between readers.
Use the project’s FVM SDK:
fvm dart run bin/main.dart
fvm dart run bin/main.dart --feed https://example.com/feed.xml
fvm dart run bin/main.dart --import subscriptions.opml
fvm dart run bin/main.dart --export > subscriptions.opmlWith no --feed argument, FeedSH loads Hacker News. Multiple --feed flags are supported.
Article and feed images are rendered in compatible terminals, with a Unicode fallback where supported by Nocterm.
| Key | Action |
|---|---|
h/l, ←/→ |
Move between feeds, articles, and reader panes |
j/k, ↑/↓ |
Change selection, or scroll the reader |
Enter |
Open selected article in the reader pane |
o |
Open selected article in a scrollable reader overlay |
b |
Open the selected article link in the system browser |
d |
Remove the selected RSS feed after confirmation |
s |
Star or unstar the selected article for this session |
a |
Add an RSS/Atom feed URL |
r |
Refresh all feeds |
? |
Toggle help |
q |
Quit |
Feeds added with a are saved as JSON in ~/.config/feedsh/feeds.json. This is deliberately a plain file rather
than SharedPreferences or SQLite: FeedSH is a Dart terminal app and only needs
to retain a small ordered list of URLs.
fvm dart format .
fvm dart analyze
fvm dart test