A lightweight terminal-based Reddit client built with Textual, using JSON feeds to serve threads.
Browse subreddit feeds via RSS or JSON, navigate posts with Vim-style bindings, and view content directly in your terminal.
Works via Reddit feeds to avoid paid API requirements.
Reddit provides a personal feed for your subreddit subscriptions.
You can find them on the feeds page.
These are private feeds with an access token and the link should not be shared as the token can never be revoked.
You can get feeds for any subreddit by appending /.rss or /.json to the end of a url, e.g. https://www.reddit.com/r/python/.json
Example feeds are included in config.sample.yaml.
Both types of feed are supported but JSON is superior as it includes much more information. I originally designed this for RSS, but this will likely be deprecated at a later date.
- Python 3.11+ (tested on 3.13.11)
- A modern terminal with Unicode support
- Optional: Kitty, iTerm2, or other image-capable terminals for best image support (your image-support mileage may vary)
python -m venv .venv
source .venv/bin/activatepip install -e .This installs the project in editable mode.
If config.yaml does not exist, copy the sample:
cp config.sample.yaml config.yamlExample configuration:
feeds:
- name: All
url: https://www.reddit.com/r/all/.json
- name: reddit.com (time capsule)
url: https://www.reddit.com/r/reddit.com/.json
- name: Python
url: https://www.reddit.com/r/python/.json
- name: Linux
url: https://www.reddit.com/r/linux/.json
- name: Programming
url: https://www.reddit.com/r/programming/.json
theme: defaultYou can add or remove feeds as you like.
python app.pyOPTIONAL: Boss Mode! Want to browse Reddit from your Terminal without having REDDIT CLI splashed across the top of the page? Use --boss-mode
python app.py --boss-modeBoss mode will alter the ASCII art to be work related, powered by synergy! It also does not load any images.
- j / ↓ – Move down
- k / ↑ – Move up
- Ctrl+D – Page down
- Ctrl+U – Page up
- Enter – Open feed
- q – Quit
- j / ↓ – Move down
- k / ↑ – Move up
- Ctrl+D – Page down
- Ctrl+U – Page up
- Enter – View post
- h / ← – Go back
- r – Refresh feed
At the bottom of the feed:
- Ctrl+L – Load more posts
- j / k – Scroll
- Ctrl+D – Page down
- Ctrl+U – Page up
- h / ← – Go back
- RSS-based Reddit browsing
- Themed UI (Textual CSS themes)
- Scrollable post viewer
- State stack navigation
- Vim-style keybindings
- No Reddit API required
Themes are located in:
src/reddit_cli/style/themes/Each theme is a .tcss file.
To create a custom theme:
- Copy default.tcss
- Rename it (example: mytheme.tcss)
- Modify styles
- Set in config.yaml:
I have included one additional theme called 'terrible' as an example.
theme: mythemeRestart the app to apply changes.
app.py – Application entry point
config.sample.yaml – Example configuration
config.yaml – User configuration
pyproject.toml – Project metadata & dependencies
src/reddit_cli/
common.py – Shared models and structures
feed_handlers.py – Feed parsing logic
utils.py – Helper utilities
style/
themes/ – Textual CSS themes
states/ – States/State Manager
...

