LLM locaux plus rapides : Headroom −95 % contexte Agent (2026)
Vous avez branché Ollama, DeepSeek ou Llama 3 sur un agent de code sur Mac mini—puis demandé un grep monorepo, un tail de 200 Mo ou un dump SQL : l’UI gèle, les tok/s s’effondrent. Sur du 8B–14B local, l’inflation des sorties outils pèse plus que le QI du modèle.
Headroom est une couche OSS de compression de contexte (Apache 2.0) qui réduit outils, logs et lectures avant le LLM—souvent 60–95 % de tokens en moins, avec CCR. Guide local-first ; pour le cloud, voir Hermes Trajectory Compressor.
Pourquoi les agents locaux « bloquent » sur grosses sorties outils
La latence locale dépend de la longueur de contexte et de la bande passante mémoire.
| Symptôme | Cause | Ce que vous voyez |
|---|---|---|
| 30–120 s « réflexion » après un outil | 50k–200k tokens stdout | Barre bloquée ; GPU 100 % |
| Réponses moins bonnes en session | KV cache plein | Ignore les consignes récentes |
| App figée | Swap sur Mac mini 8–16 Go | Ventilateurs ; pression rouge |
| grep en boucle | Ligne d’erreur noyée | Même appel outil |
Définition : Latence outil LLM local = délai entre retour outil et prochain token—dominé par le prefill sur contexte non compressé.
Sur Apple Silicon, combinez avec le budget mémoire 8 Go si OpenClaw ou MLX tournent aussi.
Architecture Headroom : compresser avant prefill
Agent (Cursor, OpenClaw, custom)
│ tool results · file reads · logs
▼
┌──────────────────────────────┐
│ Headroom (local) │
│ CacheAligner → ContentRouter │
│ ├─ SmartCrusher (JSON) │
│ ├─ CodeCompressor (AST) │
│ └─ Kompress-base (text) │
│ CCR store (reversible) │
└──────────────────────────────┘
│ compressed messages + headroom_retrieve
▼
Ollama / llama.cpp / MLX API
Bench README (python -m headroom.evals suite) :
| Charge | Avant | Après | Gain |
|---|---|---|---|
| Code search (100 results) | 17,765 | 1,408 | 92% |
| SRE incident debugging | 65,694 | 5,118 | 92% |
| GitHub issue triage | 54,174 | 14,761 | 73% |
CCR: originaux sur disque ; headroom_retrieve pour le fichier complet—compression agressive sans suppression.
Matrice de décision Mac mini
| Approche | Réduction | Réversible | Idéal pour |
|---|---|---|---|
head -n 50 | Élevée | Non | Bricolage |
Hermes compression.* | Moyenne | Partielle | Hermes Agent |
| proxy Headroom | 60–95 % | Oui (CCR) | Endpoint local OpenAI |
| MCP Headroom | Mêmes moteurs | Oui | Agents MCP / OpenClaw |
| Quant plus petit | 0 % sur logs | N/A | Mauvais levier |
OpenClaw sur Mac mini : Headroom supporte wrap et plugin ContextEngine.
Si X, faire Y : Si prefill > 10 s sur 7B après un cat, activez Headroom avant GPU plus gros ou cloud.
Scénario A — Ollama + proxy Headroom (zéro changement code)
Pointez l’URL OpenAI de l’agent vers Headroom ; Headroom relaie vers Ollama.
Stack : Mac mini M2/M3/M4, qwen2.5-coder:7b ou deepseek-r1:8b, proxy 8787.
Attendu : Rapports : 45–90 s → 8–15 s sur 7B (variable—benchmarkez).
Scénario B — OpenClaw + MCP Headroom
Outils MCP headroom_compress, etc. Les plafonds de parallélisme comptent—2 tâches sur 16 Go.
Runbook en 7 étapes : Headroom + Ollama
Étape 1 — Installer Headroom (Python 3.10+)
brew install python@3.12
pip install "headroom-ai[proxy,mcp]"
headroom --version
Étape 2 — Ollama + modèle code
ollama pull qwen2.5-coder:7b-instruct-q4_K_M
ollama serve # default :11434
Étape 3 — Lancer le proxy
export OLLAMA_HOST=http://127.0.0.1:11434
headroom proxy --port 8787 --backend ollama
(guide proxy.)
Étape 4 — Agent sur localhost:8787
Client compatible OpenAI :
export OPENAI_API_BASE=http://127.0.0.1:8787/v1
export OPENAI_API_KEY=ollama # placeholder for local
base URL http://127.0.0.1:8787/v1.
Étape 5 — Test baseline vs compressé
Même prompt deux fois :
- Ollama direct — tous les
TODO - Via Headroom
Étape 6 — retrieve en debug
Demandez headroom_retrieve autour de ERROR si trace manquante.
Étape 7 — LaunchAgent (option 24/7)
Plists séparés ; guide mémoire pour Node. Ordre : Ollama, Headroom, agent.
Dépannage
Toujours lent après Headroom
Motif : Faible ratio sur binaire/protobuf.
Correctif : Formateurs JSON/texte ; CodeCompressor ; moins de lectures parallèles.
Ligne de test FAIL « perdue »
Motif : Écrasement log agressif.
Correctif : headroom_retrieve ; mots-clés erreur ; rg --json ERROR.
Proxy OK mais 404 sur /v1/chat/completions
Motif : Mauvais backend ; Ollama arrêté.
Correctif : curl tags ; redémarrer avec bon --backend.
Parcours recommandé
| Setup | Recommandation |
|---|---|
| Cursor + Ollama | proxy 8787 + quant 7B |
| Passerelle OpenClaw | MCP + concurrence 1–2 sur 16 Go |
| Boucles Hermes 8B | Headroom + réglage 8B |
| MLX local | Headroom outils ; guide MLX hybride |