rxs: A terminal feed reader
Terminal feed reader

Read feeds from
your terminal.

rxs reads RSS, Atom, and JSON feeds. It stores articles in a local SQLite database, refreshes subscriptions on launch, and can be used entirely from the keyboard.

$ /bin/sh -c "$(curl -fsSL https://rxs.sh/install.sh)"
See how it works
rxs: browse offline ready
rxs showing feeds, articles, and a reading preview in three terminal panes
Why the terminal?

A feed reader can fit into the tools you already use.

If you already spend time in a terminal, a terminal-first reader is worth exploring: it keeps navigation on the keyboard, works over SSH, and stores its data on your machine. rxs is one way to try that workflow.

View the source and docs

Local storage

Articles are stored in a SQLite database on your machine, so downloaded content remains available offline.

Keyboard controls

Navigate, search, star, refresh, and read without switching to a mouse.

Portable subscriptions

Import and export subscriptions as OPML. rxs does not require an account or a hosted service.

How it works

Install, add a feed,
and start reading.

rxs is a single command-line program. Install the binary, give it a feed URL, and open the reader.

Install

$ /bin/sh -c "$(curl -fsSL https://rxs.sh/install.sh)"

Download and verify the latest rxs release.

Add a feed

$ rxs add https://example.com/feed.xml

Add a feed URL from the command line or from inside the reader.

Read

$ rxs

Open the interface to browse feeds and read downloaded articles.

Keyboard workflow

From feed list to
focused reading.

Filter subscriptions, choose an article, and move into the full-width reader without leaving the keyboard.

rxs: navigation local
rxs feed and article navigation interface
rxs: reader local
rxs focused reader view displaying a downloaded article and reading progress
ggtop of article
/find in article
Reading view

Read and navigate in the same interface.

Articles open in a full-width view with a reading-progress indicator. rxs saves your position when you leave or confirm quitting and restores it when you return, even in a different terminal size. An unread article is marked read after you reach its end and return to the article list.

  • j / k move and scroll
  • / + n / N find and jump between matches
  • s star for later
  • o open the original
More features

What else is
included.

Full-text search

Search downloaded titles and article text.

Automatic refreshes

Shows your saved library immediately, then refreshes every feed in the background.

Eleven color schemes

Choose from dark, light, and high-contrast palettes with live preview.

Adaptive layout

Three panes when wide, one focused view when narrow.

Stars and unread state

Save articles for later. Read articles are hidden by default and can be shown for the session.

OPML import and export

Move subscriptions into or out of rxs.

Getting started

Quick start

Install the latest release, add a feed directly, then open the reader. Added articles are downloaded to the local database immediately.

$ /bin/sh -c "$(curl -fsSL https://rxs.sh/install.sh)"
$ rxs add https://example.com/feed.xml
$ rxs

The installer supports macOS and Linux on AMD64 and ARM64. Windows binaries are available from GitHub Releases. You can also press a in the reader and type or paste a feed URL with your terminal's paste shortcut.

At the prompt

CLI reference

rxs
Open the terminal interface.
rxs add URL
Add and immediately refresh a feed.
rxs upgrade
Check for, verify, and install the latest release.
rxs -db PATH
Use a different SQLite database.
rxs -config PATH
Load a different configuration file.
rxs -version
Print the installed version.

On launch, the interactive UI displays the saved library first and then refreshes every feed concurrently. Refresh results and per-feed failures appear in the status line without interrupting navigation. It also checks for a new release once a day and lets you install it or defer the prompt for 24 hours.

Inside the reader

Key map

j / kMove or scroll
h / lChange pane
EnterOpen selected item
SpaceToggle read state
sToggle starred
r / RRefresh one or all
uShow or hide read articles
cPreview color schemes
/Filter, search, or find
?Show all shortcuts

Arrow keys, Tab, and Shift-Tab are supported too. The reader footer shows your progress; leaving the reader or confirming quit saves that position for your next visit. Press ? in rxs for the complete key map.

Make it yours

Configuration

No configuration file is required. Create config.json in the platform configuration directory to change reading behavior, choose a color scheme, or use a terminal browser.

{
  "appearance": { "color_scheme": "nord" },
  "reading": {
    "hide_read": false,
    "mark_read_on_scroll": true
  },
  "content": { "full_articles": "auto" },
  "browser": {
    "mode": "tui",
    "command": "w3m",
    "args": ["{url}"]
  }
}

Press c to preview all eleven built-in schemes: Default, Catppuccin Latte and Mocha, Dracula, Gruvbox Dark and Light, High Contrast, Nord, Solarized Dark and Light, and Tokyo Night. Enter saves your choice; Esc restores the previous scheme. By default, read articles are hidden, previews stay unread as you move through the list, and full-article downloads are off. On Linux and FreeBSD, the configuration path is ~/.config/rxs/config.json.

Optional enrichment

Full-article downloads

Some feeds contain only a summary or truncated article. Set content.full_articles to auto to let rxs fetch the linked page for those entries and store its readable text for offline reading and search.

{
  "content": {
    "full_articles": "auto"
  }
}

Automatic enrichment applies to refreshes in the interactive reader and to rxs add. Enriched entries are labeled full text. Complete feed entries do not trigger an extra request, and a failed download leaves the feed-provided content unchanged.

This feature is off by default. It processes static HTML only: it does not run JavaScript, keep cookies, send URL credentials, or bypass authentication and paywalls. Private, loopback, link-local, and cloud-metadata destinations are rejected, including redirect targets. rxs attempts at most ten enrichments per feed refresh and retries an entry only when its URL, feed content, or update time changes.

What you download

Release contents

Precompiled archives are available for macOS, Linux, Windows, and FreeBSD on AMD64 and ARM64. Every archive includes the rxs binary, its MIT license, and the full license text for each linked third-party module.

Release dependencies use permissive MIT or BSD-3-Clause licenses. Because the linked modules vary by operating system, each archive contains a license report generated from that specific binary.

TRY RXS

See if terminal-first reading
fits your workflow.

rxs is open source, runs locally, and does not require an account.

Get rxs on GitHub macOS + Linux + Windows + FreeBSD · AMD64 + ARM64