1 stable release
| 20260125.0.1 | Jan 25, 2026 |
|---|
#1492 in Command line utilities
350KB
3K
SLoC
discourse-tui
A terminal user interface for browsing Discourse forums.
Screenshots
Forum Picker

Add Forum

Main Screen

Topic View

Features
- Browse multiple Discourse instances
- View topics and posts with raw markdown display
- Infinite scroll pagination (auto-loads posts when scrolling)
- Reply to topics and quote posts with vim-style modal composer
- Category filtering with real API queries
- Full post view for long content
- Vim-style keybindings (j/k navigation)
- Config file storage for API credentials
Installation
From source
git clone https://github.com/ducks/discourse-tui
cd discourse-tui
cargo build --release
./target/release/discourse-tui
From releases
Download the latest binary for your platform from the releases page.
Usage
On first run, you'll be prompted to add a forum. You can add multiple forums and switch between them.
Keybindings
Forum Picker (Screen 5)
j/kor arrow keys: Navigate forumsa: Add new forumd: Delete selected forumEnter: Select forum1: Switch to main screen (if forum selected)q: Quit
Main Screen (Screen 1)
j/kor arrow keys: Navigate topics/sidebarn/p: Next/previous page of topicsTab: Switch between sidebar and topicsEnter: Open selected topic or apply filter5: Switch to forum pickerEsc: Return to forum pickerq: Quit
Topic View
j/kor arrow keys: Navigate posts (auto-loads more when scrolling near edges)r: Reply to topicq(on a post): Quote selected post in replySpaceorEnter: View full postEsc: Return to main screenq: Quit
Composer (Reply/Quote)
i: Enter insert mode to type your messageEsc: Exit insert mode (or close composer from normal mode)Enter: Submit post (from normal mode)- Starts in normal mode (vim-style modal editing)
Post View
j/kor arrow keys: Scroll postEsc: Return to topic viewq: Quit
Configuration
Forums are stored in ~/.config/discourse-tui/config.toml:
[current]
selected = "meta"
[[forums]]
id = "meta"
name = "Discourse Meta"
url = "https://meta.discourse.org"
api_key = "your-api-key" # optional
username = "your-username" # optional
Getting API Keys
To browse private forums or post content, you'll need an API key:
- Go to your forum's user preferences
- Navigate to the API section
- Generate a new user API key
- Add it to the config along with your username
Anonymous browsing works for public forums without API credentials.
Dependencies
Built with:
- ratatui - Terminal UI framework
- discourse-api-rs - Discourse API client
- tokio - Async runtime
- serde - Config serialization
License
MIT
Dependencies
~12–32MB
~435K SLoC