Keep x.com. Lose the rage.
unrager is a browser extension that removes rage-bait from your Home timeline. A model on your own computer reads each post first, against rules you write, and nothing is sent anywhere else.
Free and open source. Runs on Ollama, LM Studio, vLLM, llama.cpp or SGLang, in Chrome, Brave, Edge, Vivaldi or Arc on macOS and Linux.
How it works
-
X sends your timeline
You open x.com as usual. The extension reads the posts X already sent your browser. It asks X for nothing extra.
-
Your model reads each post
unrager, running quietly on your computer, asks your model whether each post is one of the topics you'd rather not see.
-
The rage-bait never shows
New posts wait out of view for the moment it takes your model to read them, so the ones it hides never appear. Everything else stays exactly as X made it.
Install
About five minutes, most of it downloading a model.
-
Run a model
Install Ollama, then pull the default model:
ollama pull qwen3:4b-instructThat's all: unrager finds Ollama on its usual port.
Any server that speaks the OpenAI chat API works. Start it with an instruction-tuned model; small ones (4 to 12B) are plenty.
In step 2,
unrager setuplooks for it on the usual ports and prints the lines to put infilter.toml, which look like this:[llm] backend = "openai" host = "http://localhost:1234" model = "qwen3-8b" timeout_seconds = 120Save them, then run
unrager setuponce more. The file is in~/.config/unrager/on Linux and~/Library/Application Support/unrager/on macOS. -
Install unrager
curl -fsSL https://unrager.com/install.sh | bashIt installs one program, then runs
unrager setup: that checks your model answers, starts unrager in the background so it comes back after a restart, and unpacks the extension. Prefer Rust?cargo install unrager, thenunrager setup. -
Add the extension
- Open
chrome://extensions. It works in every Chromium browser. - Turn on Developer mode.
- Click Load unpacked, press Ctrl L (⌘ ⇧ G on a Mac) and paste the folder setup printed.
Then open x.com. Posts that match your rules disappear as they load, and the unrager icon counts them.
- Open
Later, unrager update updates everything; the extension's popup then asks you to reload it. unrager doctor tells you what's wrong if anything is.
You write the rules
unrager starts with a list of the usual suspects: electoral politics, culture-war fights, doom, engagement farming, crypto shilling. Change any of it from the extension's popup, in plain words.
A post is hidden when a topic is the point of it, not when it mentions one in passing, so a physicist's joke about the election stays. The model also drops what you'd mute on sight: ratio bait, subtweets, "RT if you agree". A post it isn't sure about stays, unless you set it to strict.
Curious what it caught? Show hidden posts brings them back, dimmed and labelled with the rule that caught each one. Show this post keeps one for good, and right-clicking any post hides it by hand.
12 posts hidden
148 posts checked on this tab.
Pause filtering
Show hidden posts
What gets hidden
How strict
RelaxedBalancedStrict
- american electoral politics, presidents, congress, partisan fightsRemove41 hidden
- economic fearmongering: tariff panic, inflation doom, market-crash propheciesRemove23 hidden
- rage-bait reply farming, ratio threads, inflammatory hot takesRemove17 hidden
- crypto and NFT shilling, pump-and-dump hypeRemove6 hidden
Add a topicAdd
Save rules
Settings
Questions
Does anything leave my computer?
No. The extension hands posts to unrager on localhost, and unrager hands them to your model. There's no account and no telemetry. The background server setup installs never reads your X login and never talks to X, and it refuses requests from web pages, so a site you visit can't use it.
What if my model is off, or slow?
X works as usual. unrager fails open: a new post waits a couple of seconds for its verdict and then shows anyway, a failed check is never remembered, and unrager asks again shortly. The toolbar badge shows ! while posts can't be checked, and the popup says what to run.
Which models work?
The default is Qwen3 4B on Ollama, 2.5 GB: small models judge posts well, answer fast and stay loaded. Any instruction-tuned model that can answer HIDE or KEEP will do, served by Ollama or by anything that speaks the OpenAI chat API: LM Studio, vLLM, llama.cpp's llama-server, SGLang, llama-swap. unrager eval tells you how well yours filters.
Can the model run on a different computer?
Yes. Run unrager setup --bind 0.0.0.0:7777 on the machine with the GPU, then enter its address under Settings in the extension's popup. Keep that to a private network such as Tailscale: unrager has no login of its own.
Which browsers and systems?
Chromium browsers (Chrome, Brave, Edge, Vivaldi, Arc) on macOS and Linux. Firefox, Safari and Windows aren't supported yet.
Why load it unpacked instead of from the Chrome Web Store?
It isn't listed yet. Loading it unpacked takes three clicks once; after that, unrager update keeps it current.
Does it filter replies, search and profiles too?
No, only your Home timeline, For you and Following. When you open a profile, a thread or a search, you went looking, so you see all of it.
Also in the box
A terminal client
unrager began as an X client for the terminal, and it's still here: run unrager for your timeline with the same filter, threads in a split pane, inline images in Ghostty, Kitty and WezTerm, and a local model that translates posts and explains threads. Every text box is a small Vim editor.
An iPhone app and a CLI
The extension can't reach X's own iPhone app, so there's a native one you build from source, served by unrager setup --apps. And a command line for reading and posting. The README has the details.