headroomlabs-ai/headroomPublic

Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.

AI summary: A context compression layer that significantly reduces token usage for AI agents while preserving accuracy.

Stars
74.3K
+217 today
Forks
5.7K
Watchers
218
Open issues
229
Open PRs
308
Contributors
~289
Commits
2.9K
Branches
454

PythonApache-2.0Created Jan 7, 2026Last push 2d agoLatest release v0.39.0+638 stars this week+5.8K this month

Quick answers

What is headroom?
A context compression layer that significantly reduces token usage for AI agents while preserving accuracy.
What does headroom do?
Headroom is a local-first proxy and library that compresses the context read by AI agents—including tool outputs, logs, RAG chunks, and files—before it reaches the LLM. It routes different content types, such as JSON or ASTs, to specialized compressors to shrink token usage by up to 95% without altering the agent's final answers. The system features a Caching and Context Retrieval (CCR) mechanism that stores original data locally, allowing the LLM to request the uncompressed details if needed. It also offers output token shaping to trim verbose model responses and reduce reasoning effort on routine tasks, seamlessly integrating with existing agents without requiring code changes.
Who is headroom for?
Headroom is designed for software engineers and developers who heavily utilize LLMs and autonomous coding agents and want to optimize token usage and API costs. It requires a working Python environment for the CLI proxy or Node.js for the library.
How do I get started with headroom?
uv tool install --python 3.13 "headroom-ai[all]"
How popular is headroom on GitHub?
headroomlabs-ai/headroom has 74,282 stars and 5,746 forks on GitHub, and gained 638 stars in the last 7 days.
What license does headroom use?
headroomlabs-ai/headroom is released under the Apache-2.0 license.

Star history

since Jul 29, 2026
020K40K60KJul 2026Aug 2026Sep 2026Oct 2026
74.3K stars as of Oct 2, 2026. Measured daily since Jul 29, 2026; GitHub no longer exposes earlier star timestamps.

Update history

1 recorded
  • Oct 4, 2026Previously tracked as chopratejas/headroom; its 1 daily snapshot and 22 trending appearances were merged into this profile. Stars: 62,966 on 2026-07-29 under the old name, 74,282 on 2026-10-02 (+11,316).

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 1 commit2026-01-07: 2 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 8 commits2026-01-11: 0 commits2026-01-12: 3 commits2026-01-13: 0 commits2026-01-14: 11 commits2026-01-15: 13 commits2026-01-16: 8 commits2026-01-17: 3 commits2026-01-18: 7 commits2026-01-19: 13 commits2026-01-20: 6 commits2026-01-21: 5 commits2026-01-22: 5 commits2026-01-23: 1 commit2026-01-24: 5 commits2026-01-25: 3 commits2026-01-26: 4 commits2026-01-27: 11 commits2026-01-28: 1 commit2026-01-29: 2 commits2026-01-30: 7 commits2026-01-31: 12 commits2026-02-01: 14 commits2026-02-02: 8 commits2026-02-03: 1 commit2026-02-04: 2 commits2026-02-05: 0 commits2026-02-06: 2 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 2 commits2026-02-11: 3 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 1 commit2026-02-16: 0 commits2026-02-17: 1 commit2026-02-18: 3 commits2026-02-19: 10 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 4 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 4 commits2026-02-28: 1 commit2026-03-01: 0 commits2026-03-02: 4 commits2026-03-03: 1 commit2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 6 commits2026-03-07: 6 commits2026-03-08: 0 commits2026-03-09: 1 commit2026-03-10: 3 commits2026-03-11: 1 commit2026-03-12: 4 commits2026-03-13: 6 commits2026-03-14: 1 commit2026-03-15: 2 commits2026-03-16: 2 commits2026-03-17: 1 commit2026-03-18: 0 commits2026-03-19: 18 commits2026-03-20: 8 commits2026-03-21: 2 commits2026-03-22: 2 commits2026-03-23: 4 commits2026-03-24: 5 commits2026-03-25: 13 commits2026-03-26: 10 commits2026-03-27: 10 commits2026-03-28: 6 commits2026-03-29: 2 commits2026-03-30: 20 commits2026-03-31: 11 commits2026-04-01: 2 commits2026-04-02: 17 commits2026-04-03: 17 commits2026-04-04: 12 commits2026-04-05: 2 commits2026-04-06: 20 commits2026-04-07: 18 commits2026-04-08: 18 commits2026-04-09: 10 commits2026-04-10: 28 commits2026-04-11: 25 commits2026-04-12: 11 commits2026-04-13: 5 commits2026-04-14: 10 commits2026-04-15: 26 commits2026-04-16: 25 commits2026-04-17: 18 commits2026-04-18: 28 commits2026-04-19: 3 commits2026-04-20: 22 commits2026-04-21: 37 commits2026-04-22: 31 commits2026-04-23: 29 commits2026-04-24: 12 commits2026-04-25: 16 commits2026-04-26: 29 commits2026-04-27: 20 commits2026-04-28: 14 commits2026-04-29: 12 commits2026-04-30: 11 commits2026-05-01: 10 commits2026-05-02: 31 commits2026-05-03: 21 commits2026-05-04: 18 commits2026-05-05: 23 commits2026-05-06: 11 commits2026-05-07: 9 commits2026-05-08: 9 commits2026-05-09: 9 commits2026-05-10: 5 commits2026-05-11: 7 commits2026-05-12: 5 commits2026-05-13: 7 commits2026-05-14: 14 commits2026-05-15: 2 commits2026-05-16: 1 commit2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 7 commits2026-05-20: 0 commits2026-05-21: 2 commits2026-05-22: 4 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 10 commits2026-05-26: 4 commits2026-05-27: 0 commits2026-05-28: 2 commits2026-05-29: 2 commits2026-05-30: 2 commits2026-05-31: 0 commits2026-06-01: 10 commits2026-06-02: 9 commits2026-06-03: 12 commits2026-06-04: 25 commits2026-06-05: 7 commits2026-06-06: 3 commits2026-06-07: 3 commits2026-06-08: 8 commits2026-06-09: 11 commits2026-06-10: 18 commits2026-06-11: 33 commits2026-06-12: 11 commits2026-06-13: 17 commits2026-06-14: 5 commits2026-06-15: 14 commits2026-06-16: 23 commits2026-06-17: 13 commits2026-06-18: 9 commits2026-06-19: 9 commits2026-06-20: 1 commit2026-06-21: 10 commits2026-06-22: 22 commits2026-06-23: 31 commits2026-06-24: 20 commits2026-06-25: 8 commits2026-06-26: 14 commits2026-06-27: 15 commits2026-06-28: 12 commits2026-06-29: 7 commits2026-06-30: 20 commits2026-07-01: 7 commits2026-07-02: 20 commits2026-07-03: 12 commits2026-07-04: 3 commits2026-07-05: 6 commits2026-07-06: 13 commits2026-07-07: 16 commits2026-07-08: 37 commits2026-07-09: 34 commits2026-07-10: 28 commits2026-07-11: 43 commits2026-07-12: 22 commits2026-07-13: 62 commits2026-07-14: 76 commits2026-07-15: 38 commits2026-07-16: 35 commits2026-07-17: 18 commits2026-07-18: 21 commits2026-07-19: 8 commits2026-07-20: 13 commits2026-07-21: 7 commits2026-07-22: 12 commits2026-07-23: 3 commits2026-07-24: 9 commits2026-07-25: 3 commits2026-07-26: 9 commits2026-07-27: 10 commits2026-07-28: 1 commit2026-07-29: 7 commits2026-07-30: 4 commits2026-07-31: 2 commits2026-08-01: 1 commit2026-08-02: 7 commits2026-08-03: 23 commits2026-08-04: 18 commits2026-08-05: 14 commits2026-08-06: 3 commits2026-08-07: 3 commits2026-08-08: 8 commits2026-08-09: 4 commits2026-08-10: 7 commits2026-08-11: 17 commits2026-08-12: 65 commits2026-08-13: 24 commits2026-08-14: 6 commits2026-08-15: 1 commit2026-08-16: 8 commits2026-08-17: 15 commits2026-08-18: 14 commits2026-08-19: 8 commits2026-08-20: 19 commits2026-08-21: 6 commits2026-08-22: 7 commits2026-08-23: 5 commits2026-08-24: 3 commits2026-08-25: 4 commits2026-08-26: 7 commits2026-08-27: 9 commits2026-08-28: 3 commits2026-08-29: 1 commit2026-08-30: 5 commits2026-08-31: 8 commits2026-09-01: 1 commit2026-09-02: 8 commits2026-09-03: 0 commits2026-09-04: 4 commits2026-09-05: 4 commits2026-09-06: 1 commit2026-09-07: 0 commits2026-09-08: 0 commits2026-09-09: 13 commits2026-09-10: 19 commits2026-09-11: 9 commits2026-09-12: 4 commits2026-09-13: 5 commits2026-09-14: 0 commits2026-09-15: 0 commits2026-09-16: 0 commits2026-09-17: 0 commits2026-09-18: 0 commits2026-09-19: 0 commits
2,449 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Landmark project

    74,282 stars

  • Very active

    2,449 commits in 52 weeks

  • Community-driven

    ~289 contributors

  • Well documented

    High community health score

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

  • Repeat trending

    31 trending appearances

  • Top 10% tracked

    Rank 114 of 1135

What headroom does

Headroom is a local-first proxy and library that compresses the context read by AI agents—including tool outputs, logs, RAG chunks, and files—before it reaches the LLM. It routes different content types, such as JSON or ASTs, to specialized compressors to shrink token usage by up to 95% without altering the agent's final answers. The system features a Caching and Context Retrieval (CCR) mechanism that stores original data locally, allowing the LLM to request the uncompressed details if needed. It also offers output token shaping to trim verbose model responses and reduce reasoning effort on routine tasks, seamlessly integrating with existing agents without requiring code changes.

Headroom is designed for software engineers and developers who heavily utilize LLMs and autonomous coding agents and want to optimize token usage and API costs. It requires a working Python environment for the CLI proxy or Node.js for the library.

  • Content-aware routing: Automatically detects content types and applies specialized compressors like SmartCrusher for JSON or CodeCompressor for ASTs.
  • Reversible compression (CCR): Caches original, uncompressed data locally so the LLM can retrieve full context on demand via MCP tools.
  • Output token reduction: Trims verbose model preambles and dynamically dials down reasoning effort during routine tool interactions.
  • Seamless integration: Runs as a drop-in local proxy, an inline library for Python and TypeScript, or wraps existing agents via CLI.
  • Cross-agent memory store: Maintains shared memory across different LLM providers like Claude, Codex, Gemini, and Grok.

Where teams use it

Cost reduction for coding agents

Developers running autonomous coding agents use the proxy to compress large code search results and logs, drastically cutting API costs.

Context window optimization

Engineers compress massive codebase explorations to fit within standard model context windows without losing critical structural details.

Incident debugging efficiency

SRE teams feed extensive server logs and system metrics through the compressor to isolate issues faster and cheaper.

Automated workflow learning

Teams utilize the `headroom learn` feature to mine failed agent sessions and automatically generate corrections for future runs.

Getting started: uv tool install --python 3.13 "headroom-ai[all]"

README

main branch
Headroom — the context compression layer for AI agents. A 55,957 token agent prompt compresses to the 24,340 tokens actually sent to the model, and the FATAL line at item 67 survives byte for byte.

headroomlabs-ai/headroom | Trendshift — #1 Repository Of The Day

GitHub stars CI PyPI npm Model Docs License

Quickstart · Install · Proof · Agents · Docs · Discord · llms.txt

AI agents / LLMs: read /llms.txt here, or fetch the live index · full docs blob.

Headroom compresses everything your AI agent reads — tool outputs, logs, RAG chunks, files, and conversation history — before it reaches the LLM. Same answers, fraction of the tokens. Compression runs on your machine; no prompt or file content is sent anywhere to be compressed.

Headroom compressing a 10,144 token log dump to 1,260 tokens while preserving the FATAL line
10,144 → 1,260 tokens. The same FATAL found.

What it does

  • Library — compress(messages) in Python or TypeScript, inline in any app.
  • Proxy — headroom proxy --port 8787, zero code changes, any language.
  • Agent wrap — headroom wrap claude|codex|grok|copilot|cursor|aider|opencode|cline|continue|goose|openhands|openclaw|vibe|omp|zcode in one command; undo with headroom unwrap <tool>.
  • MCP server — headroom_compress, headroom_retrieve, headroom_stats for any MCP client.
  • Cross-agent memory — one shared store across Claude, Codex, Gemini and Grok, with automatic dedup.
  • headroom learn — mines failed sessions and writes corrections to CLAUDE.local.md (default, gitignored), CLAUDE.md, AGENTS.md, GEMINI.md or GROK.md.
  • Output token reduction — trims what the model writes back, not only what you send. See below.
  • Reversible (CCR) — originals are cached locally and retrieved on demand.

How it works

 Your agent / app
   (Claude Code, Cursor, Codex, LangChain, Agno, Strands, your own code…)
        │   prompts · tool outputs · logs · RAG results · files
        ▼
    ┌────────────────────────────────────────────────────┐
    │  Headroom   (runs locally — your data stays here)  │
    │  ────────────────────────────────────────────────  │
    │  CacheAligner  →  ContentRouter  →  CCR            │
    │                    ├─ SmartCrusher   (JSON)        │
    │                    ├─ CodeCompressor (AST)         │
    │                    └─ Kompress-v2-base (text, HF)  │
    │                                                    │
    │  Cross-agent memory  ·  headroom learn  ·  MCP     │
    └────────────────────────────────────────────────────┘
        │   compressed prompt  +  retrieval tool
        ▼
 LLM provider  (Anthropic · OpenAI · Bedrock · …)
  • ContentRouter detects the content type and selects a compressor for it.
  • SmartCrusher / CodeCompressor / Kompress-v2-base handle JSON, source code and prose respectively.
  • CacheAligner flags volatile content that would bust a provider KV-cache prefix. It never rewrites prompts.
  • CCR stores originals locally so the model can call headroom_retrieve when it needs the full text.

→ Architecture · CCR · Kompress-v2-base model card

Get started (60 seconds)

# 1 — Install
uv tool install --python 3.13 "headroom-ai[all]"  # CLI in a self-contained env
pip install "headroom-ai[all]"                    # Python — ships the `headroom` CLI
npm install headroom-ai                           # TypeScript SDK only — no CLI

# 2 — Pick a mode
headroom deploy                         # turnkey local deployment + agent config
headroom wrap claude                    # wrap a coding agent
headroom proxy --port 8787              # drop-in proxy, zero code changes
# or: from headroom import compress     # inline library

# 3 — Check it and watch the savings
headroom doctor                         # health check — confirms routing works
headroom perf
headroom dashboard                      # live savings (proxy must be running)

Inline, in Python:

from headroom import compress
from openai import OpenAI

messages = [{"role": "user", "content": "Analyze these results"}]
result = compress(messages, model="gpt-4o")

client = OpenAI()
response = client.chat.completions.create(model="gpt-4o", messages=result.messages)
print(f"Saved {result.tokens_saved} tokens ({result.compression_ratio:.0%})")

Launch a wrapped agent session each time, so the setup runs. headroom wrap starts a local proxy, installs Serena for semantic code navigation, and launches the agent configured to route through Headroom. Serena is registered at user scope (for Claude Code, in ~/.claude.json), so it stays available in your other projects until you run headroom unwrap. Skip it with --code-memory none.

The headroom CLI ships only in the PyPI package. The npm headroom-ai package is the TypeScript SDK — a library you import (import { compress } from 'headroom-ai') — and provides no headroom command.

Proof

Four scenarios built from real MCP server output formats, measured with the provider tokenizer and the shipped compress(). Seeded and offline, so you get the same numbers we did:

uv run python benchmarks/index_proof_table.py --seed 20260902
Scenario Before After Saved
Code search (100 results) 17,199 13,597 21%
SRE incident debugging 55,957 24,340 57%
Codebase exploration 58,801 33,895 42%
GitHub issue triage 46,067 32,429 30%

Savings scale with how repetitive the payload is. Repeated JSON arrays and log lines clear 90% in benchmarks/bench_latency.py; prose and already-dense output compress very little. Run headroom savings against your own traffic for the number that applies to you.

Compression costs well under a millisecond — 0.21 ms p50 on a 10K-token JSON search result, 1.4 ms at 100K tokens — so it does not show up in agent latency.

Accuracy. python -m headroom.evals suite --tier 1:

Benchmark Category N Baseline Headroom Delta
GSM8K Math 100 0.870 0.870 ±0.000
TruthfulQA Factual 100 0.530 0.560 +0.030
SQuAD v2 QA 100 — 97% at 19% compression
BFCL Tools 100 — 97% at 32% compression

At N=100 a delta of ±0.03 falls inside the confidence interval, so TruthfulQA shows no detectable difference rather than an improvement. Methodology →

Output token reduction

Everything above shrinks the prompt you send. You also pay for every token the model writes back, and on Opus-class models output costs 5× input. Much of that output is ceremony: "Great, let me…" preambles, code re-printed straight back at you, and deep reasoning spent on routine steps like reading a file.

Headroom trims it from the proxy, with no change to your code:

  • Verbosity steering appends a short "be terse, don't restate context" note to the end of the system prompt, so your prompt cache still hits.
  • Effort routing dials thinking effort down when a turn is only the model resuming after a tool result — a file read, a passing test. New questions and errors keep full effort.

Both apply to Anthropic /v1/messages and to OpenAI-compatible /v1/chat/completions and /v1/responses. Effort routing uses reasoning_effort on OpenAI and thinking.budget_tokens / output_config.effort on Anthropic, with the same clamp-only invariant and the same output_shaper:* labels on both paths.

export HEADROOM_OUTPUT_SHAPER=1     # off by default
headroom proxy --port 8787

Already running a proxy? These switches are read live on every request, so a proxy that headroom wrap reused rather than started would not see a value you export afterwards — its environment was snapshotted at launch. headroom wrap hot-syncs your current settings to the running proxy over a loopback POST /admin/runtime-env, so they take effect with no restart and no dropped requests. On a shared proxy these overrides are global; the last explicit setting wins.

Terseness you didn't have to configure. People rarely state how terse they want answers — they show it, by interrupting long replies or moving on before they could have read them. headroom learn --verbosity reads past sessions and picks the level:

headroom learn --verbosity            # dry run — preview what it found
headroom learn --verbosity --apply    # save it; the proxy picks it up

Measuring it. Output savings are counterfactual — we never see what the model would have written — so Headroom reports an estimate with a confidence range and labels it as one:

headroom output-savings
# Reduction: 31.7%  (95% CI 27.7% … 35.7%)   [estimated]

For a measured number instead, hold out 10% of conversations as an unshaped control: export HEADROOM_OUTPUT_HOLDOUT=0.1. The dashboard's Output Tokens Saved card then reads measured rather than estimated, with the band.

→ Output token reduction

Agent compatibility

Agent headroom wrap Notes
Claude Code ✅ --memory · --code-graph · --1m · --tool-search
Codex ✅ shares memory with Claude
Grok CLI ✅ routes via GROK_MODELS_BASE_URL
Cursor Manual setup starts the proxy and prints base URLs for Cursor settings
Aider ✅ starts proxy + launches
Copilot CLI ✅ starts proxy + launches
VS Code Copilot ✅ transparent proxy; keeps the selected model
OpenClaw ✅ installs as a ContextEngine plugin
OpenCode ✅ injects config · starts proxy + launches
Cline ✅ starts proxy + injects config
Continue ✅ starts proxy + injects config
Goose ✅ starts proxy + launches
OpenHands ✅ starts proxy + launches
Mistral Vibe ✅ starts proxy + launches
Oh My Pi ✅ injects config · starts proxy + launches
Cortex Code Library only 60–65% savings in library mode; no wrap
Kimi CLI ✅ OAuth bearer forwarded — log in once
ZCode ✅ starts the proxy and prints base URLs for ZCode settings

Any OpenAI-compatible client works through headroom proxy. MCP-native clients: headroom mcp install. Undo durable wrapping with headroom unwrap <tool> (claude, copilot, codex, grok, kimi, omp, opencode, openclaw, zcode). Registry authors should use the canonical server.json rather than reconstructing the headroom mcp serve contract from prose.

GitHub Copilot CLI subscription mode

Headroom can route Copilot CLI subscription traffic through the local proxy:

headroom copilot-auth login
headroom wrap copilot --subscription -- --model gpt-4o

The wrapper exchanges Headroom's reusable GitHub OAuth token for Copilot's short-lived API token and prints the upstream endpoint as COPILOT_PROVIDER_API_URL=... at launch. headroom copilot-auth login stores a Headroom-specific Copilot OAuth token, rather than relying on generic GitHub or Copilot CLI tokens that can read account metadata but are still rejected by Copilot's token-exchange endpoint.

For GitHub Enterprise Server or a custom-domain Copilot deployment, set one of these before launching. If both are set, the URL wins:

export GITHUB_COPILOT_ENTERPRISE_DOMAIN=ghe.example.com
export GITHUB_COPILOT_ENTERPRISE_URL=https://ghe.example.com

For GitHub.com Enterprise Cloud URLs such as github.com/enterprises/your-enterprise, set neither — Headroom uses GitHub's normal token-exchange endpoint and the Copilot API endpoint advertised for the signed-in account.

Platform support. macOS auth reuse through Copilot CLI Keychain storage and Windows device authentication are live-tested. Copilot CLI 1.0.81 does not expose its Windows login through the legacy Credential Manager schema Headroom reads, so run headroom copilot-auth login on Windows. Linux Secret Service / secret-tool reuse is implemented but not yet validated on a real desktop. In Docker and CI, pass an explicit GITHUB_COPILOT_TOKEN or GITHUB_COPILOT_GITHUB_TOKEN instead of relying on host keychain access.

GitHub Copilot in VS Code

Headroom overrides Copilot's API proxy endpoint, so the VS Code model picker stays authoritative. GPT-5.5, GPT-5.6 Luna/Sol/Terra, Claude Sonnet/Opus and other Copilot models keep their original model IDs while traffic passes through the local compression proxy. Headroom does not patch VS Code or change Codex settings.

headroom copilot-auth login
headroom wrap vscode

Keep the command running and use Copilot normally. The short-lived upstream Copilot token is held only in the proxy process. Full guide →

Claude Code in VS Code

The official Claude Code extension embeds Claude Code and reads the same user settings as the CLI. Install the proxy extra, then run the wrapper from the project you will open in VS Code:

pip install "headroom-ai[proxy]"
headroom wrap vscode-claude
# Optional: persist Claude Code's client-owned 1M model selector
headroom wrap vscode-claude --1m

Reload the VS Code window on first run. Keep the wrapper terminal running while you use the Claude Code panel; the dashboard or proxy log printed at startup shows requests and savings. Your Anthropic authentication and selected model are preserved. Ctrl+C stops the proxy; headroom unwrap vscode-claude restores the settings that existed before setup.

With --1m, Headroom writes the resolved [1m] model selector to Claude Code's top-level user setting and restores the exact prior model on headroom unwrap vscode-claude or when setup runs again without --1m. Use headroom wrap vscode-claude --no-configure --1m to print the setting without writing files.

Claude Code and Anthropic own 1M model support and account eligibility. Local tests prove persisted settings and restoration, not a live entitled VS Code session or the resulting context window. Full guide →

When to use · when to skip

Good fit if you run coding agents daily and want savings without touching your code, work across several agents and want one shared memory, or need compression that is reversible — originals stay retrievable through CCR for the configured TTL.

Skip it if you only use one provider's native compaction and don't need cross-agent memory, or work in a sandbox where local processes can't run.

Headroom pays off on long agent sessions with heavy tool output. Short conversational exchanges, prose, and already-dense payloads see little or no reduction, and blocks under min_input_words come back byte-identical. Limitations has the full list.

Integrations — drop Headroom into any stack
Your setup Hook in with
Any Python app compress(messages, model=…)
Any TypeScript app await compress(messages, { model })
Anthropic / OpenAI SDK withHeadroom(new Anthropic()) · withHeadroom(new OpenAI())
Vercel AI SDK wrapLanguageModel({ model, middleware: headroomMiddleware() })
LiteLLM litellm.callbacks = [HeadroomCallback()]
LangChain HeadroomChatModel(your_llm)
Agno HeadroomAgnoModel(your_model)
Strands Strands guide
ASGI apps app.add_middleware(CompressionMiddleware)
Multi-agent SharedContext().put / .get
MCP clients headroom mcp install
What's inside
  • SmartCrusher — universal JSON: arrays of dicts, nested objects, mixed types. It keeps error items, values outside the normal statistical range, and first/last boundaries, selected from field-variance statistics rather than a keyword list.
  • CodeCompressor — AST-aware for Python, JS/TS, Go, Rust, Java, C/C++, C#, PHP.
  • Kompress-v2-base — our HuggingFace model, trained on agentic traces.
  • Image compression — 40–90% reduction through a trained ML router.
  • CacheAligner — flags volatile content that would bust a provider KV-cache prefix; never rewrites prompts.
  • Live-zone compression — only new bytes are compressed (fresh tool output, the latest turn). The frozen prefix stays byte-identical, so the provider cache survives, and history is never dropped.
  • CCR — reversible compression; the model retrieves originals on demand.
  • Cross-agent memory — shared store with agent provenance and auto-dedup.
  • SharedContext — compressed context passing across multi-agent workflows.
  • headroom learn — plugin-based failure mining for Claude, Codex and Gemini.
Pipeline internals

One request lifecycle is shared by compress(), the SDKs and the proxy:

Setup → Pre-Start → Post-Start → Input Received → Input Cached → Input Routed → Input Compressed → Input Remembered → Pre-Send → Post-Send → Response Received

  • Transforms do the work: CacheAligner → ContentRouter → SmartCrusher / CodeCompressor / Kompress-base, live-zone only. IntelligentContext and RollingWindow were retired in PR-B1.
  • Pipeline extensions observe or customise lifecycle stages through on_pipeline_event(...).
  • Compression hooks sit alongside the lifecycle as an additional extension seam.
  • Proxy extensions are the integration seam for ASGI middleware, routes and startup policy.

Provider- and tool-specific behaviour lives under headroom/providers/, so core orchestration stays focused on lifecycle, sequencing and policy:

  • CLI/tool slices — headroom/providers/claude, copilot, codex, grok, openclaw
  • Provider runtime slices — headroom/providers/claude, gemini, with shared backend dispatch in headroom/providers/registry.py
  • wrap.py, client.py, cli/proxy.py and proxy/server.py delegate env shaping, API target normalisation, backend selection and transport dispatch

Install

uv tool install --python 3.13 "headroom-ai[all]"  # CLI, isolated app env
pip install "headroom-ai[all]"                    # Python, everything — includes the CLI
npm install headroom-ai                           # TypeScript SDK (library only)
docker pull ghcr.io/headroomlabs-ai/headroom:latest

Granular extras: [proxy], [mcp], [ml] (Kompress-v2-base), [code], [memory], [vector] (optional HNSW backend — needs a C++ toolchain, not in [all]), [relevance], [image], [agno], [langchain], [evals], [pytorch-mps] (Apple-GPU memory-embedder offload — set HEADROOM_EMBEDDER_RUNTIME=pytorch_mps). Requires Python 3.10+.

[all] covers the core stack but not the framework adapters. Install those separately: pip install "headroom-ai[langchain]", and likewise [agno], [strands], [anyllm], [bedrock].

→ Installation guide — Docker tags, persistent service, PowerShell, devcontainers.

uv, pipx, and MCP clients that don't inherit your PATH

Prefer uv tool install for the CLI so the command lives in an isolated app environment. On macOS, pass --python 3.13 if your default python3 is newer than the current wheel set:

brew install python@3.13  # if 3.13 is not already available
uv tool install --python 3.13 "headroom-ai[all]"
uv tool update-shell      # if ~/.local/bin is not on PATH
headroom --version

Codex and other MCP clients often cannot inherit an interactive shell PATH. Configure the absolute path returned by command -v headroom:

[mcp_servers.headroom]
command = "/Users/you/.local/bin/headroom"
args = ["mcp", "serve"]

command = "headroom" only works when the client starts with a PATH that already includes the uv tool directory.

With pipx, choose the interpreter explicitly:

pipx install --python python3.13 "headroom-ai[all]"

Native wheels currently cover macOS Apple Silicon and Linux. On Intel macOS, use the Docker-native install until native wheel support lands.

CPU requirement (x86/x86_64). The ONNX-backed features — Magika content detection and embedding relevance — use a precompiled ONNX Runtime that needs AVX2. On x86 hosts without AVX2 (some Docker/QEMU setups, older cloud VMs) Headroom falls back to its non-ONNX paths — BM25 relevance, heuristic detection — rather than crashing. arm64 and Apple Silicon need no AVX2.

Updating
headroom update          # detects pip / pipx / uv tool and upgrades in place
headroom update --check  # report the latest release without upgrading
headroom update --pre    # include pre-releases

headroom update works out how Headroom was installed (pip/venv, pip --user, pipx, uv tool) and runs the matching upgrade on macOS, Linux and Windows. For git checkouts, editable installs, Docker images and externally-managed system Pythons (PEP 668) it prints the correct manual step instead of guessing.

The proxy also prints a one-line "update available" notice at startup. It checks PyPI at most once a day, in the background, and never blocks. Opt out with HEADROOM_UPDATE_CHECK=off; it is also skipped in --stateless mode and CI.

Corporate networks and SSL inspection

If pip install "headroom-ai[all]" fails with CERTIFICATE_VERIFY_FAILED (unable to get local issuer certificate), your network runs SSL inspection — a MITM proxy presenting a company CA. The build backend (maturin) downloads rustup over a connection your TLS stack does not trust. Install Rust first so the build never fetches it:

# macOS / Linux
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh && rustup default stable
# Windows
winget install Rustlang.Rustup && rustup default stable

Restart your shell, then install. A prebuilt wheel avoids the Rust build entirely: pip install --only-binary headroom-ai headroom-ai. Wheels are published for Windows (win_amd64), Linux (x86_64 / aarch64) and macOS (Apple Silicon and Intel), so those platforms never need a local Rust toolchain — the Rust-first step above is only for the sdist fallback when no wheel matches.

Two runtime assets are fetched over TLS. If they are blocked, trust your corporate CA through REQUESTS_CA_BUNDLE / SSL_CERT_FILE / CURL_CA_BUNDLE:

  • cdn.pyke.io — the ONNX Runtime for the Rust core. Or pre-provide it with ORT_STRATEGY=system and ORT_LIB_LOCATION=/path/to/onnxruntime.
  • huggingface.co — the kompress-base model. Pre-download it and run with HF_HUB_OFFLINE=1, or point HF_ENDPOINT at a trusted mirror.

Running with compression disabled (pure gateway) needs neither asset.

Intel macOS: no prebuilt ONNX Runtime (#941). ort-sys ships no prebuilt binary for x86_64-apple-darwin, so a source build fails by default even outside a corporate proxy. Point it at a system runtime:

brew install onnxruntime
ORT_STRATEGY=system \
ORT_LIB_LOCATION="$(brew --prefix onnxruntime)/lib" \
ORT_PREFER_DYNAMIC_LINK=1 \
  pip install "headroom-ai[all]"

# ORT is dlopen'd at runtime too:
export ORT_DYLIB_PATH="$(brew --prefix onnxruntime)/lib/libonnxruntime.dylib"

ORT_LIB_LOCATION must point at lib/, not the bare prefix, and ORT_PREFER_DYNAMIC_LINK=1 is required — without it ORT_STRATEGY=system still attempts static linking, which the Homebrew keg does not provide.

"Basic Constraints of CA cert not marked critical" is a different failure. If TLS fails with:

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed:
Basic Constraints of CA cert not marked critical

then the corporate CA is found and trusted, and adding it to a CA bundle changes nothing. Python 3.13 with OpenSSL 3.x enables VERIFY_X509_STRICT by default, which enforces RFC 5280 §4.2.1.9: a CA cert's basicConstraints must be marked critical. Inspection roots such as Zscaler set CA:TRUE without the critical bit, so the chain is rejected.

HEADROOM_TLS_STRICT=0 clears only the strict flag, from every TLS context Headroom controls — the proxy's httpx upstream client and the urllib3/huggingface_hub path used for model downloads. Chain validation, signature, expiry and hostname checks all stay on.

HEADROOM_TLS_STRICT=0 headroom proxy --port 8787

The Rust core's ONNX download uses a separate TLS stack (rustls / OS trust store) and is unaffected by HEADROOM_TLS_STRICT. On Windows the corporate root must be in the machine certificate store — browsers already trust it there — or pre-provision ONNX Runtime with ORT_STRATEGY=system to skip the download.

headroom learn

headroom learn mining failed sessions and writing corrections

headroom learn mines failed sessions and writes corrections to CLAUDE.local.md (default, gitignored; use --target CLAUDE.md for the shared team file), AGENTS.md or GEMINI.md. → Failure learning

Telemetry

An anonymous beacon is on by default. It reports how compression behaved: ratios, counters, provider and model IDs, OS and architecture. It never sends prompts, completions, code or file paths. It exists so we can see when a release regresses a compression ratio across real workloads rather than only our own test corpus.

Turn it off with HEADROOM_BEACON=off, the DO_NOT_TRACK=1 convention, or --offline. The full field list is in the proxy docs.

Headroom for teams

Headroom OSS is built for individual developers: run headroom proxy or headroom wrap on your laptop and start cutting tokens in minutes, free and local-first.

Running it across an engineering org is a different job — a shared always-on deployment, centralised config and version rollout, org-wide savings dashboards, SSO and access control, air-gapped and VPC installs, and someone to call. We help companies with that, self-hosted with support or fully managed.

If your team is spending real money on LLM tokens — Claude Code, Codex, Cursor, or agents running in CI — email hello@headroomlabs.ai with your stack and rough monthly LLM spend.

Everything in this repo stays open source under Apache 2.0. The managed offering is for teams that would rather have it deployed, supported and scaled for them.

Documentation

Start here Go deeper
Quickstart Architecture
Proxy How compression works
MCP tools CCR — reversible compression
Memory Cache optimization
Failure learning Benchmarks
Configuration Limitations
Persistent installs Savings analytics

Compared to

Headroom runs locally, covers every content type, works with every major framework, and is reversible.

Scope Deploy Local Reversible
Headroom All context — tools, RAG, logs, files, history Proxy · library · middleware · MCP Yes Yes
Compresr, Token Co. Text sent to their API Hosted API call No No
OpenAI Compaction Conversation history Provider-native No No

Headroom is the proxy, and it compresses everything flowing through it whatever sits upstream. Our recommended companion is Serena for semantic code navigation, installed by default when you wrap an agent, plus Ponytail if you want leaner model output. Everything else is your call — attach a code-memory MCP, Graphify, Caveman, or any other MCP server, and Headroom compresses downstream of all of it.

Contributing

git clone https://github.com/headroomlabs-ai/headroom.git && cd headroom
uv sync --extra dev && uv run pytest

Devcontainers in .devcontainer/ (default, plus memory-stack with Qdrant and Neo4j). See CONTRIBUTING.md.

Community

License

Apache 2.0 — see LICENSE.

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

171 total
  1. Release v0.39.0v0.39.0Sep 25, 202642 downloads

    ## [0.39.0](https://github.com/headroomlabs-ai/headroom/compare/v0.38.0...v0.39.0) (2026-09-25) ### Features * **compression:** describe what CCR compression dropped, not just how much ([#3635](https://github.com/headroomlabs-ai/headroom/issues/3635)) ([62d1cc0](https://github.com/headroomlabs-ai/headroom/commit/62d1cc08b10c3e397875d82a33e500ce9a6b44e7)) * **hooks:** add protect_messages, a hard per-message compression veto ([#3772](https://github.com/headroomlabs-ai/headroom/issues/3772)) ([d17ac6a](https://github.com/headroomlabs-ai/headroom/commit/d17ac6a174d9617951ca6eff4646da4c19f83922)) * **opencode:** exclude hosts from transport plugin routing ([#3668](https://github.com/headroomlabs-ai/headroom/issues/3668)) ([0024b57](https://github.com/headroomlabs-ai/headroom/commit/0024b57405ee0b9b622c7ef5e18bde1657d4a142)) * **proxy:** let /transformations/feed omit message bodies for number-only pollers ([#3672](https://github.com/headroomlabs-ai/headroom/issues/3672)) ([46ac52d](https://github.com/headroomlabs-ai/headroom/commit/46ac52d39d6d7fc275dc24c7788bca5acfbcde31)) * **savings:** carry exact cache-read cost in history rollups ([#3734](https://github.com/headroomlabs-ai/head

  2. Release v0.38.0v0.38.0Sep 21, 2026149 downloads

    ## [0.38.0](https://github.com/headroomlabs-ai/headroom/compare/v0.37.0...v0.38.0) (2026-09-21) ### Features * **beacon:** schema v2 — routing/compression training signal, gzip transport ([#3253](https://github.com/headroomlabs-ai/headroom/issues/3253)) ([67eb910](https://github.com/headroomlabs-ai/headroom/commit/67eb910e38b9879bb0bcbacdc36db69e36901075)) * **cache:** add the headroom-cache-ttl offline TTL estimator the docs reference ([#2670](https://github.com/headroomlabs-ai/headroom/issues/2670)) ([52c7aa2](https://github.com/headroomlabs-ai/headroom/commit/52c7aa2e6faa9ff5010c84d73fa35936288bbe8a)) * **dashboard:** Cost Saved headline card; label per-row savings as message-only ([#3353](https://github.com/headroomlabs-ai/headroom/issues/3353)) ([17b0412](https://github.com/headroomlabs-ai/headroom/commit/17b041235480654ee69d775e38f2f09ffe468e1d)) * **dashboard:** show routing savings for this session and all time ([#3362](https://github.com/headroomlabs-ai/headroom/issues/3362)) ([a811984](https://github.com/headroomlabs-ai/headroom/commit/a811984ffb62a866274dda2928f78922101c824b)) * **proxy/model-router:** add require_tools route condition ([#2362](https://github.com/head

  3. Release v0.37.0v0.37.0Aug 27, 20261.1K downloads

    ## [0.37.0](https://github.com/headroomlabs-ai/headroom/compare/v0.36.5...v0.37.0) (2026-08-27) ### Features * **compress:** session-aware /v1/compress (sidecar mode) + /v1/usage relay ([#3270](https://github.com/headroomlabs-ai/headroom/issues/3270)) ([4fa8802](https://github.com/headroomlabs-ai/headroom/commit/4fa88026d9ff64092feaa750789a28be3ed0ace8)) * **proxy:** self-limiting session state for the compression-cache registry ([#3261](https://github.com/headroomlabs-ai/headroom/issues/3261)) ([826b600](https://github.com/headroomlabs-ai/headroom/commit/826b600c9b5ac80dae5930e1b7aa376a463d28d6)) * **proxy:** unify proxy and sidecar compression on one session engine ([#3271](https://github.com/headroomlabs-ai/headroom/issues/3271)) ([d12ea50](https://github.com/headroomlabs-ai/headroom/commit/d12ea501222b92f371b5427595c14ec2466a3f39)) ### Bug Fixes * **cache/semantic:** don't semantic-match an empty query across contexts ([#3226](https://github.com/headroomlabs-ai/headroom/issues/3226)) ([455f4f2](https://github.com/headroomlabs-ai/headroom/commit/455f4f263ce2638ff387c52d42601760f5cf0784)) * **copilot:** preserve native enterprise model routing ([#2998](https://github.com/he

  4. Release v0.36.5v0.36.5Aug 22, 2026253 downloads

    ## [0.36.5](https://github.com/headroomlabs-ai/headroom/compare/v0.36.4...v0.36.5) (2026-08-22) ### Bug Fixes * **codex:** detect ChatGPT auth from id_token claims so wrap/init emit requires_openai_auth ([#3212](https://github.com/headroomlabs-ai/headroom/issues/3212)) ([2f81fa5](https://github.com/headroomlabs-ai/headroom/commit/2f81fa5931ddf233b908103f25c614b5a6b7e33b)) * **doctor:** report project-scoped Claude routing instead of a false negative ([#3213](https://github.com/headroomlabs-ai/headroom/issues/3213)) ([8f3e33a](https://github.com/headroomlabs-ai/headroom/commit/8f3e33a00ea377403497b600841c03344d0c1cd8))

  5. Release v0.36.4v0.36.4Aug 22, 202681 downloads

    ## [0.36.4](https://github.com/headroomlabs-ai/headroom/compare/v0.36.3...v0.36.4) (2026-08-22) ### Bug Fixes * **dashboard:** pin MIME types for the vendored static assets ([#3193](https://github.com/headroomlabs-ai/headroom/issues/3193)) ([b485768](https://github.com/headroomlabs-ai/headroom/commit/b4857685ffca656f8f4f17111b88e80637511f52)) * **proxy/responses:** keep the Codex additional_tools carrier on the wire ([#3194](https://github.com/headroomlabs-ai/headroom/issues/3194)) ([1617f83](https://github.com/headroomlabs-ai/headroom/commit/1617f839a197ed1f17ca2083fbd288ffa2af7820)) * **security:** validate caller-supplied upstreams on every resolution path ([#3195](https://github.com/headroomlabs-ai/headroom/issues/3195)) ([3e3c409](https://github.com/headroomlabs-ai/headroom/commit/3e3c409436792129259cfae3d95179a94321f9ce)) * skip cross-turn dedup pointers on OpenAI chat streaming ([#3191](https://github.com/headroomlabs-ai/headroom/issues/3191)) ([9c30b62](https://github.com/headroomlabs-ai/headroom/commit/9c30b629624a42495d82f79fb7df9f21cdac7865)) * **wrap:** make the Serena pre-index stall budget configurable ([#3183](https://github.com/headroomlabs-ai/headroom/issues/318

Code frequency

additions and deletions
+299.9K-299.9KWeek of 2026-01-04: +70,056 linesWeek of 2026-01-04: -6,326 linesWeek of 2026-01-11: +44,379 linesWeek of 2026-01-11: -4,825 linesWeek of 2026-01-18: +38,625 linesWeek of 2026-01-18: -4,983 linesWeek of 2026-01-25: +62,621 linesWeek of 2026-01-25: -26,349 linesWeek of 2026-02-01: +15,892 linesWeek of 2026-02-01: -4,490 linesWeek of 2026-02-08: +1,297 linesWeek of 2026-02-08: -96 linesWeek of 2026-02-15: +4,564 linesWeek of 2026-02-15: -748 linesWeek of 2026-02-22: +12,541 linesWeek of 2026-02-22: -527 linesWeek of 2026-03-01: +3,995 linesWeek of 2026-03-01: -2,052 linesWeek of 2026-03-08: +5,917 linesWeek of 2026-03-08: -992 linesWeek of 2026-03-15: +7,575 linesWeek of 2026-03-15: -651 linesWeek of 2026-03-22: +19,135 linesWeek of 2026-03-22: -4,888 linesWeek of 2026-03-29: +22,613 linesWeek of 2026-03-29: -12,423 linesWeek of 2026-04-05: +299,857 linesWeek of 2026-04-05: -4,897 linesWeek of 2026-04-12: +64,931 linesWeek of 2026-04-12: -28,863 linesWeek of 2026-04-19: +117,029 linesWeek of 2026-04-19: -72,196 linesWeek of 2026-04-26: +124,987 linesWeek of 2026-04-26: -41,172 linesWeek of 2026-05-03: +46,941 linesWeek of 2026-05-03: -14,090 linesWeek of 2026-05-10: +12,962 linesWeek of 2026-05-10: -2,502 linesWeek of 2026-05-17: +12,177 linesWeek of 2026-05-17: -580 linesWeek of 2026-05-24: +2,845 linesWeek of 2026-05-24: -715 linesWeek of 2026-05-31: +5,779 linesWeek of 2026-05-31: -3,215 linesWeek of 2026-06-07: +35,498 linesWeek of 2026-06-07: -8,173 linesWeek of 2026-06-14: +20,589 linesWeek of 2026-06-14: -1,855 linesWeek of 2026-06-21: +39,655 linesWeek of 2026-06-21: -270,428 linesWeek of 2026-06-28: +17,116 linesWeek of 2026-06-28: -3,169 linesWeek of 2026-07-05: +30,780 linesWeek of 2026-07-05: -9,153 linesWeek of 2026-07-12: +66,176 linesWeek of 2026-07-12: -12,657 linesWeek of 2026-07-19: +9,423 linesWeek of 2026-07-19: -3,605 linesWeek of 2026-07-26: +26,123 linesWeek of 2026-07-26: -11,968 linesWeek of 2026-08-02: +16,538 linesWeek of 2026-08-02: -1,541 linesWeek of 2026-08-09: +26,363 linesWeek of 2026-08-09: -2,806 linesWeek of 2026-08-16: +16,949 linesWeek of 2026-08-16: -1,628 linesWeek of 2026-08-23: +7,890 linesWeek of 2026-08-23: -616 linesWeek of 2026-08-30: +9,558 linesWeek of 2026-08-30: -2,323 linesWeek of 2026-09-06: +18,431 linesWeek of 2026-09-06: -7,826 linesWeek of 2026-09-13: +820 linesWeek of 2026-09-13: -166 linesJan 4, 2026Sep 13, 2026
+1.3M lines added, -575.5K removed over the last year.

Commits per week

last 52 weeks
2720Week of 2025-09-20: 0 commitsWeek of 2025-09-27: 0 commitsWeek of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 11 commitsWeek of 2026-01-11: 38 commitsWeek of 2026-01-18: 42 commitsWeek of 2026-01-25: 40 commitsWeek of 2026-02-01: 27 commitsWeek of 2026-02-08: 5 commitsWeek of 2026-02-15: 15 commitsWeek of 2026-02-22: 9 commitsWeek of 2026-03-01: 17 commitsWeek of 2026-03-08: 16 commitsWeek of 2026-03-15: 33 commitsWeek of 2026-03-22: 50 commitsWeek of 2026-03-29: 81 commitsWeek of 2026-04-05: 121 commitsWeek of 2026-04-12: 123 commitsWeek of 2026-04-19: 150 commitsWeek of 2026-04-26: 127 commitsWeek of 2026-05-03: 100 commitsWeek of 2026-05-10: 41 commitsWeek of 2026-05-17: 13 commitsWeek of 2026-05-24: 20 commitsWeek of 2026-05-31: 66 commitsWeek of 2026-06-07: 101 commitsWeek of 2026-06-14: 74 commitsWeek of 2026-06-21: 120 commitsWeek of 2026-06-28: 81 commitsWeek of 2026-07-05: 177 commitsWeek of 2026-07-12: 272 commitsWeek of 2026-07-19: 55 commitsWeek of 2026-07-26: 34 commitsWeek of 2026-08-02: 76 commitsWeek of 2026-08-09: 124 commitsWeek of 2026-08-16: 77 commitsWeek of 2026-08-23: 32 commitsWeek of 2026-08-30: 30 commitsWeek of 2026-09-06: 46 commitsWeek of 2026-09-13: 5 commitsSep 20, 2025Sep 13, 2026
2.4K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 13 commitsSun 1:00 — 2 commitsSun 2:00 — 4 commitsSun 3:00 — 1 commitsSun 4:00 — 3 commitsSun 5:00 — 2 commitsSun 6:00 — 1 commitsSun 7:00 — 2 commitsSun 8:00 — 2 commitsSun 9:00 — 8 commitsSun 10:00 — 8 commitsSun 11:00 — 5 commitsSun 12:00 — 11 commitsSun 13:00 — 14 commitsSun 14:00 — 7 commitsSun 15:00 — 11 commitsSun 16:00 — 19 commitsSun 17:00 — 19 commitsSun 18:00 — 4 commitsSun 19:00 — 8 commitsSun 20:00 — 18 commitsSun 21:00 — 13 commitsSun 22:00 — 31 commitsSun 23:00 — 9 commitsMon 0:00 — 11 commitsMon 1:00 — 5 commitsMon 2:00 — 2 commitsMon 3:00 — 9 commitsMon 4:00 — 4 commitsMon 5:00 — 7 commitsMon 6:00 — 5 commitsMon 7:00 — 4 commitsMon 8:00 — 12 commitsMon 9:00 — 24 commitsMon 10:00 — 29 commitsMon 11:00 — 10 commitsMon 12:00 — 13 commitsMon 13:00 — 20 commitsMon 14:00 — 16 commitsMon 15:00 — 15 commitsMon 16:00 — 22 commitsMon 17:00 — 15 commitsMon 18:00 — 26 commitsMon 19:00 — 34 commitsMon 20:00 — 31 commitsMon 21:00 — 17 commitsMon 22:00 — 40 commitsMon 23:00 — 29 commitsTue 0:00 — 15 commitsTue 1:00 — 5 commitsTue 2:00 — 9 commitsTue 3:00 — 2 commitsTue 4:00 — 4 commitsTue 5:00 — 8 commitsTue 6:00 — 6 commitsTue 7:00 — 6 commitsTue 8:00 — 9 commitsTue 9:00 — 12 commitsTue 10:00 — 8 commitsTue 11:00 — 27 commitsTue 12:00 — 15 commitsTue 13:00 — 28 commitsTue 14:00 — 22 commitsTue 15:00 — 21 commitsTue 16:00 — 24 commitsTue 17:00 — 9 commitsTue 18:00 — 22 commitsTue 19:00 — 22 commitsTue 20:00 — 17 commitsTue 21:00 — 58 commitsTue 22:00 — 32 commitsTue 23:00 — 32 commitsWed 0:00 — 25 commitsWed 1:00 — 12 commitsWed 2:00 — 4 commitsWed 3:00 — 9 commitsWed 4:00 — 3 commitsWed 5:00 — 4 commitsWed 6:00 — 14 commitsWed 7:00 — 8 commitsWed 8:00 — 3 commitsWed 9:00 — 9 commitsWed 10:00 — 46 commitsWed 11:00 — 21 commitsWed 12:00 — 19 commitsWed 13:00 — 12 commitsWed 14:00 — 17 commitsWed 15:00 — 25 commitsWed 16:00 — 13 commitsWed 17:00 — 17 commitsWed 18:00 — 31 commitsWed 19:00 — 21 commitsWed 20:00 — 28 commitsWed 21:00 — 26 commitsWed 22:00 — 43 commitsWed 23:00 — 33 commitsThu 0:00 — 18 commitsThu 1:00 — 9 commitsThu 2:00 — 7 commitsThu 3:00 — 7 commitsThu 4:00 — 7 commitsThu 5:00 — 5 commitsThu 6:00 — 12 commitsThu 7:00 — 7 commitsThu 8:00 — 11 commitsThu 9:00 — 39 commitsThu 10:00 — 23 commitsThu 11:00 — 21 commitsThu 12:00 — 25 commitsThu 13:00 — 22 commitsThu 14:00 — 13 commitsThu 15:00 — 24 commitsThu 16:00 — 31 commitsThu 17:00 — 28 commitsThu 18:00 — 30 commitsThu 19:00 — 24 commitsThu 20:00 — 22 commitsThu 21:00 — 38 commitsThu 22:00 — 30 commitsThu 23:00 — 36 commitsFri 0:00 — 18 commitsFri 1:00 — 6 commitsFri 2:00 — 11 commitsFri 3:00 — 13 commitsFri 4:00 — 11 commitsFri 5:00 — 3 commitsFri 6:00 — 10 commitsFri 7:00 — 10 commitsFri 8:00 — 2 commitsFri 9:00 — 9 commitsFri 10:00 — 15 commitsFri 11:00 — 9 commitsFri 12:00 — 20 commitsFri 13:00 — 17 commitsFri 14:00 — 10 commitsFri 15:00 — 30 commitsFri 16:00 — 30 commitsFri 17:00 — 13 commitsFri 18:00 — 9 commitsFri 19:00 — 6 commitsFri 20:00 — 21 commitsFri 21:00 — 22 commitsFri 22:00 — 23 commitsFri 23:00 — 31 commitsSat 0:00 — 22 commitsSat 1:00 — 19 commitsSat 2:00 — 18 commitsSat 3:00 — 2 commitsSat 4:00 — 13 commitsSat 5:00 — 4 commitsSat 6:00 — 5 commitsSat 7:00 — 1 commitsSat 8:00 — 4 commitsSat 9:00 — 11 commitsSat 10:00 — 17 commitsSat 11:00 — 12 commitsSat 12:00 — 20 commitsSat 13:00 — 9 commitsSat 14:00 — 14 commitsSat 15:00 — 33 commitsSat 16:00 — 10 commitsSat 17:00 — 15 commitsSat 18:00 — 9 commitsSat 19:00 — 10 commitsSat 20:00 — 9 commitsSat 21:00 — 12 commitsSat 22:00 — 16 commitsSat 23:00 — 18 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jul 23, 2026daily#17+5
Jul 12, 2026daily#19+3
Jul 3, 2026daily#17+11
Jun 30, 2026daily#19+16
Jun 27, 2026daily#20+31
Jun 26, 2026daily#12+20
Jun 25, 2026daily#16+20
Jun 24, 2026daily#10+22
Jun 23, 2026daily#12+9
Jun 22, 2026daily#2+48
Jun 21, 2026daily#5+85
Jun 20, 2026daily#1+154
Jun 19, 2026daily#1+59
Jun 18, 2026daily#2+51
Jun 17, 2026daily#5+23
  • public-apis/public-apis

    A collective list of free APIs

    486.1K stars · Python

  • openclaw/openclaw

    The AI that really does things. Any OS. Any Platform. The lobster way. 🦞

    391.3K stars · TypeScript

  • donnemartin/system-design-primer

    Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

    373.2K stars · Python

  • obra/superpowers

    An agentic skills framework & software development methodology that works.

    295.2K stars · Shell

  • practical-tutorials/project-based-learning

    Curated list of project-based tutorials

    285.8K stars · Python

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    272.8K stars · JavaScript