unrager

A calm Twitter/X client for the terminal. A local LLM drops rage-bait before it reaches your eyes.

$ curl -fsSL unrager.com/install.sh | bash

macOS · Linux · or cargo install unrager

split-pane showing a tweet with replies
ask pane with gemma streaming an inline explanation
reply composer with Vim INSERT mode and char counter
multilingual search results with translation indicator
notifications pane with mixed notification types
user profile with tweets and metrics
scrollable help overlay with key bindings and iconography
thread · split-pane detail, replies sorted by likes

─── what it does ───────────────────────

rage filter
Every tweet classified by a local Ollama model against your rubric. Matches are physically removed — not collapsed, not grayed, gone. Verdicts cache to SQLite; edit the rubric and the cache invalidates.
terminal-native
ratatui + crossterm. Inline photos, video posters, GIF frames via the kitty graphics protocol on Ghostty, Kitty, WezTerm. Falls back to glyphs elsewhere.
free reads
Browser cookies → X's own GraphQL endpoints, the same path the web client uses. No API key, no cost, no rate tier.
write via OAuth
Tweet & reply through the official X API v2 with your own registered client. Auto-likes on reply. Your identity, your rate limits.
four LLM hooks, one model
Filter classifies tweets. Translate (T) rewrites foreign-language posts in English. Ask (A) opens an inline gemma chat about the selected post with thread context auto-attached. Brief (B) generates a short profile analysis from someone's timeline. All the same local Ollama. Nothing leaves your machine.
Vim-mode composing
Every text input — reply, ask, command palette — is a miniature Vim editor. Insert / Normal, hjkl, w/b, dd/dw, counts, ^/$. Status line shows the mode and a live character count.
serve anywhere
Optional HTTP server + embedded Dioxus web client. Pair with Tailscale and you have the same feed on iOS, Android, and the browser — one binary, one codebase.

Your home feed, minus the 12 tweets the LLM quietly ate.