A digital bodyguard for your mind.
You open Twitter to check one thing. Forty minutes later you're exhausted and angry about something you don't even care about. IntentKeeper shows you what's doing that - on Twitter, YouTube, and Reddit - before it lands.
Ragebait, fearmongering, hype, divisive framing - all detected by the patterns they use, not the topics they cover, before they affect you. Everything runs on your hardware via Ollama. No cloud. No tracking. No data leaving your machine.
Why this exists
Every major platform optimizes for engagement. Engagement is driven by emotion. The strongest emotions - outrage, fear, tribal identity - are the easiest to manufacture.
The result: your feed is optimized to make you angry, afraid, and divided. Not because the platform is evil, but because that's what the algorithm rewards.
IntentKeeper doesn't fix the platforms. It gives you a lens to see the manipulation before it hooks you.
"The content isn't the problem. The intent behind it is."
intentKeeper.mp4
A post about politics can be thoughtful analysis or manufactured outrage. A health tip can be genuine advice or fearmongering. Same topic, opposite effect on your wellbeing.
IntentKeeper classifies the manipulation patterns in content - not the topics themselves. It doesn't censor subjects. It flags the framing patterns associated with ragebait, fearmongering, divisive content, and hype before they land.
Accuracy: up to 96% on a 105-example labeled eval set (measured 2026-07-10 with llama3.1:8b). The set has grown harder over time - most remaining misses are deliberately included boundary cases, like alarming-but-sourced facts labeled genuine. Classification confidence is shown alongside each label so you know when the model is uncertain.
Option A: Docker (recommended)
git clone https://github.com/Olawoyin007/intentKeeper.git
cd intentKeeper
docker compose upThis starts Ollama and the classification server together. The model pulls automatically on first run. The server binds to 127.0.0.1:8420 by default; set APP_BIND/APP_PORT to change that.
Already running Ollama on the host? Use the server-only compose file instead:
docker compose -f docker-compose.host-ollama.yml upOption B: Manual
git clone https://github.com/Olawoyin007/intentKeeper.git
cd intentKeeper
pip install -e .
cp .env.example .env
intentkeeper-serverOllama powers the classification. Set your model in .env and the server pulls it automatically on first start:
OLLAMA_MODEL=your-model-nameRecommended models (measured on the 98-example eval set, 2026-06-14 - see docs/model-benchmark.md):
| Min VRAM | Model | Accuracy | Latency |
|---|---|---|---|
| 4 GB | llama3.2:latest |
93% | 1.5s |
| 8 GB | mistral:7b-instruct |
94% | 0.9s |
| 8 GB | llama3.1:8b |
96% | 1.8s |
| 12 GB | qwen2.5:14b-instruct-q4_K_M |
96% | 2.6s |
On the current set the 8B+ models lead at ~96%; llama3.1:8b is the best all-round default. llama3.2 (2 GB) is the lightest option at 93% - a few points behind on the harder boundary cases but fine for low-VRAM machines. mistral:7b-instruct is the fastest if latency matters most.
Don't have Ollama yet? Install it here - it runs entirely on your hardware, no cloud required.
- Open your browser and go to the extensions page:
- Chrome:
chrome://extensions - Brave:
brave://extensions - Edge:
edge://extensions - Opera:
opera://extensions
- Chrome:
- Enable Developer mode (top right toggle)
- Click Load unpacked and select the
extension/folder
Then open Twitter/X, YouTube, or Reddit and scroll your feed. Intent labels appear on content automatically.
See docs/usage.md for the full setup guide and troubleshooting.
| Intent | What It Looks Like | What Happens |
|---|---|---|
| Ragebait | "This is EXACTLY why I hate [group]. Every. Single. Time." | Blurred with reveal button |
| Fearmongering | "Society is COLLAPSING. Get out while you still can." | Tagged with label |
| Hype | "This AI tool changes EVERYTHING. You're missing out!" | Tagged with label |
| Engagement bait | "Reply with your favorite X and I'll tell you Y!" | Hidden (expandable) |
| Divisive | "People who don't do X are just lazy. Winners have discipline." | Tagged with label |
| Genuine | "I've dealt with anxiety for 10 years. Here's what helped me." | Passes through unmodified |
You open Twitter/X, YouTube, or Reddit
│
▼
Extension intercepts content before you read it
│
▼
Local LLM classifies the intent (via Ollama)
│
▼
Content is blurred, tagged, hidden, or passed through
│
▼
You decide what to engage with
All processing happens on your machine. No cloud. No data collection. No tracking.
Principles
Intent over topic. We classify the framing, not the subject matter.
Fail-open. When classification fails, content passes through unchanged.
Local-first. All classification on your device. Nothing leaves your machine.
User sovereignty. You control what gets filtered and how aggressively.
Transparency. Every classification shows why content was flagged.
See MANIFESTO.md for the full principles.
- docs/architecture.md - System diagram, classification flow, component relationships
- docs/usage.md - Full setup guide and troubleshooting
- CLAUDE.md - Contributor process guide: pre-merge gates, eval rules, key patterns
- THREAT_MODEL.md - Trust boundary and known security gaps
- ROADMAP.md - Phased implementation plan
- CHANGELOG.md - Release history
- CONTRIBUTING.md - How to contribute
- MANIFESTO.md - Core principles
Also built alongside empathySync - a local-first AI wellness assistant sharing the same philosophy.
MIT - see LICENSE.
"Protect your attention. Notice what a post is doing to you, not just what it's about."
