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
−N in the status bar is all that remains of the tweets the LLM dropped before they reached the screen.─── 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.