Bouncer
Heal your feed. Bouncer is a browser extension that uses AI to filter unwanted posts from your Twitter/X feed. Define filter topics in plain language — "crypto", "engagement bait", "rage politics" — and Bouncer classifies and hides matching posts in real time.
Install from the Chrome Web Store
Install on iOS
Features
- Natural language filters — describe what you don't want to see in your own words
- Multiple AI backends — run models locally on your GPU, or use cloud APIs (OpenAI, Google Gemini, Anthropic, OpenRouter)
- On-device inference — local models run entirely in your browser with zero data sent externally
- Image-aware filtering — multimodal models can classify posts based on images, not just text
- Reasoning transparency — see exactly why each post was filtered
- Theme-aware UI — adapts to light, dim, and dark modes automatically
Supported Models
| Provider |
Models |
Requires |
| Local (WebGPU) |
Gemma 4 E4B (Instruct) |
WebGPU-capable browser |
| OpenAI |
GPT-5 Nano, gpt-oss-20b |
API key |
| Google Gemini |
2.5 Flash Lite, 2.5 Flash, 3 Flash Preview |
API key |
| Anthropic |
Claude Haiku 4.5 |
API key |
| OpenRouter |
Nemotron Nano 12B VL (free), Ministral 3B |
Account |
| Imbue |
Default backend |
None (built-in) |
Local models are downloaded once and cached in the browser's Cache Storage.
Quick Start
Chrome / Edge (Web Store)
Install Bouncer from the Chrome Web Store.
Chrome / Edge (from source)
cd Bouncer
npm install
npm run build
- Open
chrome://extensions
- Enable Developer mode
- Click Load unpacked and select the
Bouncer/ folder
- Navigate to twitter.com / x.com
- Click "Settings" in the Bouncer element and add your preferred provider API key (or enable local models) and select your preferred model from the dropdown.
iOS
Install from the App Store
How It Works
- A MutationObserver watches the Twitter feed for new posts
- Post text, images, and metadata are extracted via the Twitter adapter
- Posts are queued and sent to the selected AI model for classification against your filter topics
- The model returns a category match and reasoning for each post
- Matching posts are hidden with a fade-out animation and added to your filtered posts list
- Click View filtered to review hidden posts and see why each was filtered
Results are cached so re-encountering a post doesn't require another inference call.