Tags: inix-x/headroom
Tags
chore: release main (headroomlabs-ai#931) 🤖 I have created a release *beep* *boop* --- <details><summary>0.26.0</summary> ## [0.26.0](headroomlabs-ai/headroom@v0.25.0...v0.26.0) (2026-06-16) ### Features * add Copilot BYOK provider wrapper utilities and CLI support ([headroomlabs-ai#1041](headroomlabs-ai#1041)) ([e67ee2a](headroomlabs-ai@e67ee2a)) * add dashboard agent usage stats ([headroomlabs-ai#814](headroomlabs-ai#814)) ([6d3f39f](headroomlabs-ai@6d3f39f)) * Add support for Mistral Vibe CLI ([headroomlabs-ai#935](headroomlabs-ai#935)) ([0932b8b](headroomlabs-ai@0932b8b)) * attribute reread waste to over-compression via marker check ([headroomlabs-ai#901](headroomlabs-ai#901)) ([f928576](headroomlabs-ai@f928576)) * **bedrock:** cross-region + Converse compression; bundle proxy binary in images ([headroomlabs-ai#999](headroomlabs-ai#999)) ([0dc2e1c](headroomlabs-ai@0dc2e1c)) * **dashboard:** surface compression-vs-cache net impact in Prefix Cache panel ([headroomlabs-ai#913](headroomlabs-ai#913)) ([2a4d300](headroomlabs-ai@2a4d300)) * **evals:** adversarial-input robustness grid for compressors ([headroomlabs-ai#918](headroomlabs-ai#918)) ([5939004](headroomlabs-ai@5939004)) * **parser:** detect re-issued identical tool calls as reread waste ([headroomlabs-ai#909](headroomlabs-ai#909)) ([7d4ae86](headroomlabs-ai@7d4ae86)) * **policy:** batch deep edits through one cache-bust ([headroomlabs-ai#856](headroomlabs-ai#856) P3a) ([headroomlabs-ai#1015](headroomlabs-ai#1015)) ([c2e52fe](headroomlabs-ai@c2e52fe)) * **policy:** consume net-cost mutation gate in ContentRouter ([headroomlabs-ai#856](headroomlabs-ai#856) P2) ([headroomlabs-ai#905](headroomlabs-ai#905)) ([553ade4](headroomlabs-ai@553ade4)) * **proxy:** compress AWS Bedrock InvokeModel requests via configurable upstream ([headroomlabs-ai#720](headroomlabs-ai#720)) ([7edb27a](headroomlabs-ai@7edb27a)) ### Bug Fixes * **anthropic:** strip styled Claude model ids ([headroomlabs-ai#651](headroomlabs-ai#651)) ([0c5c89d](headroomlabs-ai@0c5c89d)) * **anyllm:** forward openai api_base/api_key to the any-llm backend ([headroomlabs-ai#942](headroomlabs-ai#942)) ([headroomlabs-ai#954](headroomlabs-ai#954)) ([a7ee8a6](headroomlabs-ai@a7ee8a6)) * **cache:** guard None exemplar embeddings in dynamic detector ([headroomlabs-ai#950](headroomlabs-ai#950)) ([1ec9320](headroomlabs-ai@1ec9320)) * **cache:** name the missing piece in semantic detector guard ([headroomlabs-ai#1018](headroomlabs-ai#1018)) ([3b0bcee](headroomlabs-ai@3b0bcee)) * **ci:** check out repo in PR Governance label job ([headroomlabs-ai#1021](headroomlabs-ai#1021)) ([4558bc2](headroomlabs-ai@4558bc2)) * **ci:** make PR governance advisory ([headroomlabs-ai#1047](headroomlabs-ai#1047)) ([74dff94](headroomlabs-ai@74dff94)) * **codex:** compute waste signals on the OpenAI Responses path ([headroomlabs-ai#898](headroomlabs-ai#898)) ([b9e2761](headroomlabs-ai@b9e2761)) * **codex:** poll /wham/usage for subscription limits (handshake no longer sends x-codex-* headers) ([headroomlabs-ai#924](headroomlabs-ai#924)) ([8c00f71](headroomlabs-ai@8c00f71)) * **codex:** PR health label check state ([headroomlabs-ai#986](headroomlabs-ai#986)) ([99c874d](headroomlabs-ai@99c874d)) * **codex:** retag thread providers so history menu stays whole across the proxy boundary ([headroomlabs-ai#1034](headroomlabs-ai#1034)) ([74ae781](headroomlabs-ai@74ae781)) * **codex:** write canonical hooks feature flag and migrate deprecated codex_hooks ([headroomlabs-ai#743](headroomlabs-ai#743)) ([dff6a19](headroomlabs-ai@dff6a19)) * **compression:** convert tree-sitter byte offsets to char offsets ([headroomlabs-ai#892](headroomlabs-ai#892)) ([b1f700f](headroomlabs-ai@b1f700f)) * **compression:** correct JSON array item counting and entropy gate ([headroomlabs-ai#887](headroomlabs-ai#887)) ([d6f0f0f](headroomlabs-ai@d6f0f0f)) * **compression:** keep container bodies compressible in code handler ([headroomlabs-ai#890](headroomlabs-ai#890)) ([16ed73b](headroomlabs-ai@16ed73b)) * **compression:** measure short-value threshold on payload, not token ([headroomlabs-ai#889](headroomlabs-ai#889)) ([65b0e8c](headroomlabs-ai@65b0e8c)) * **compression:** use thread-local tree-sitter parsers in code handler ([headroomlabs-ai#893](headroomlabs-ai#893)) ([6cdb846](headroomlabs-ai@6cdb846)) * **gemini:** surface functionResponse payloads to waste-signal detection ([headroomlabs-ai#897](headroomlabs-ai#897)) ([9b0c840](headroomlabs-ai@9b0c840)) * **learn:** decode directory names with spaces in Windows project paths ([headroomlabs-ai#997](headroomlabs-ai#997)) ([headroomlabs-ai#1027](headroomlabs-ai#1027)) ([2d3701b](headroomlabs-ai@2d3701b)) * **learn:** scan subagent and workflow transcripts ([headroomlabs-ai#1045](headroomlabs-ai#1045)) ([0ddd4ed](headroomlabs-ai@0ddd4ed)) * **openclaw:** declare headroom_retrieve tool contract ([headroomlabs-ai#947](headroomlabs-ai#947)) ([7c8c909](headroomlabs-ai@7c8c909)) * **policy:** correct warm-cache penalty in net_mutation_gain to (S + dT) ([headroomlabs-ai#903](headroomlabs-ai#903)) ([0632eba](headroomlabs-ai@0632eba)) * **proxy:** add native Bedrock converse-stream route ([headroomlabs-ai#917](headroomlabs-ai#917)) ([b08ec15](headroomlabs-ai@b08ec15)) * **proxy:** keep codex image-generation WS turns alive through the relay ([headroomlabs-ai#1000](headroomlabs-ai#1000)) ([7dbbb40](headroomlabs-ai@7dbbb40)) * **proxy:** make budget enforcement actually work ([headroomlabs-ai#885](headroomlabs-ai#885)) ([a14ab45](headroomlabs-ai@a14ab45)) * **proxy:** read RTK gain stats globally by default ([headroomlabs-ai#957](headroomlabs-ai#957)) ([b70fccb](headroomlabs-ai@b70fccb)) * route v1internal code assist requests to cloudcode-pa.googleapis… ([headroomlabs-ai#821](headroomlabs-ai#821)) ([e20f16b](headroomlabs-ai@e20f16b)) * **serena:** stop the Serena dashboard popup and make --no-serena actually disable Serena ([headroomlabs-ai#1003](headroomlabs-ai#1003)) ([919379a](headroomlabs-ai@919379a)) * support Copilot Business subscription auth ([headroomlabs-ai#641](headroomlabs-ai#641)) ([0b4a4bd](headroomlabs-ai@0b4a4bd)) * wire HEADROOM_EXCLUDE_TOOLS / HEADROOM_TOOL_PROFILES into Click proxy entrypoint ([headroomlabs-ai#943](headroomlabs-ai#943)) ([9b7b436](headroomlabs-ai@9b7b436)) * **wrap:** avoid duplicate top-level keys when injecting codex provider ([headroomlabs-ai#884](headroomlabs-ai#884)) ([dd22cfd](headroomlabs-ai@dd22cfd)) ### Code Refactoring * DRY cache logic, add thread safety, fix Bash exclusion ([headroomlabs-ai#704](headroomlabs-ai#704)) ([e36fccd](headroomlabs-ai@e36fccd)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
chore: release main (headroomlabs-ai#891) 🤖 I have created a release *beep* *boop* --- <details><summary>0.25.0</summary> ## [0.25.0](headroomlabs-ai/headroom@v0.24.0...v0.25.0) (2026-06-12) ### Features * add differential network capture harness ([headroomlabs-ai#761](headroomlabs-ai#761)) ([11ab5f8](headroomlabs-ai@11ab5f8)) * add light mode for dashboard ([headroomlabs-ai#834](headroomlabs-ai#834)) ([c425893](headroomlabs-ai@c425893)) * add OAuth2 client-credentials upstream-auth proxy extension ([headroomlabs-ai#778](headroomlabs-ai#778)) ([headroomlabs-ai#784](headroomlabs-ai#784)) ([eb2e50f](headroomlabs-ai@eb2e50f)) * add Vertex AI proxy routing ([headroomlabs-ai#793](headroomlabs-ai#793)) ([3c77e52](headroomlabs-ai@3c77e52)) * **cli:** comprehensive help text, validation, and exception handling improvements ([headroomlabs-ai#640](headroomlabs-ai#640)) ([028efab](headroomlabs-ai@028efab)) * compression safety rails — error-output protection, pipeline circuit breaker, library inflation guard ([headroomlabs-ai#851](headroomlabs-ai#851)) ([c0cadcc](headroomlabs-ai@c0cadcc)) * **dashboard:** per-model savings breakdown and expected-vs-actual cost on historical charts ([headroomlabs-ai#807](headroomlabs-ai#807)) ([34dafe6](headroomlabs-ai@34dafe6)) * detect re-served tool results as over-compression waste signal ([headroomlabs-ai#854](headroomlabs-ai#854)) ([5f1d88a](headroomlabs-ai@5f1d88a)) * **evals:** add zero-cost tool schema compaction integrity eval ([headroomlabs-ai#817](headroomlabs-ai#817)) ([53a08c6](headroomlabs-ai@53a08c6)) * gated Markdown-KV compaction formatter (serialization-aware output) ([headroomlabs-ai#859](headroomlabs-ai#859)) ([06b2625](headroomlabs-ai@06b2625)) * **kompress:** warn on unrecognized HEADROOM_KOMPRESS_BACKEND + document backend selection ([headroomlabs-ai#204](headroomlabs-ai#204)) ([6367d0b](headroomlabs-ai@6367d0b)) * **memory:** add opt-in Apple-GPU (MPS) embedding runtime ([headroomlabs-ai#766](headroomlabs-ai#766)) ([c71592d](headroomlabs-ai@c71592d)) * net-cost cache mutation formula on CompressionPolicy ([headroomlabs-ai#856](headroomlabs-ai#856) P1) ([headroomlabs-ai#857](headroomlabs-ai#857)) ([d5f5802](headroomlabs-ai@d5f5802)) * **plugins:** Hermes agent headroom_retrieve plugin ([headroomlabs-ai#824](headroomlabs-ai#824)) ([058bced](headroomlabs-ai@058bced)) * probe-based retention scoring of recorded compression events ([headroomlabs-ai#862](headroomlabs-ai#862)) ([c2106cb](headroomlabs-ai@c2106cb)) * **proxy:** add CLI opt-outs for CCR injection (compression-only mode) ([headroomlabs-ai#823](headroomlabs-ai#823)) ([693d9d2](headroomlabs-ai@693d9d2)) * **proxy:** attribute savings history rollups per provider ([headroomlabs-ai#791](headroomlabs-ai#791)) ([0b8b8d9](headroomlabs-ai@0b8b8d9)) * **proxy:** log compressed messages alongside original request ([headroomlabs-ai#261](headroomlabs-ai#261)) ([2269e40](headroomlabs-ai@2269e40)) * **proxy:** per-project savings breakdown on the dashboard (claude, codex, aider, copilot, cursor) ([headroomlabs-ai#803](headroomlabs-ai#803)) ([914a60a](headroomlabs-ai@914a60a)) * support Python 3.14+ via pyo3 abi3 stable ABI ([headroomlabs-ai#516](headroomlabs-ai#516)) ([19eac8e](headroomlabs-ai@19eac8e)) * switch Kompress default to kompress-v2-base with weight-only int8 ONNX ([headroomlabs-ai#799](headroomlabs-ai#799)) ([74392b2](headroomlabs-ai@74392b2)) * **transforms:** attribute read_lifecycle + smart_crush tags ([headroomlabs-ai#249](headroomlabs-ai#249)) ([8f37426](headroomlabs-ai@8f37426)) ### Bug Fixes * **anthropic:** CCR exception must re-raise, not silently swallow ([headroomlabs-ai#838](headroomlabs-ai#838)) ([8db5efc](headroomlabs-ai@8db5efc)) * **ccr:** key Rust search/diff/log markers with explicit_hash ([headroomlabs-ai#852](headroomlabs-ai#852)) ([bfcb07d](headroomlabs-ai@bfcb07d)) * **ccr:** make retrieval TTL configurable ([headroomlabs-ai#715](headroomlabs-ai#715)) ([2533f77](headroomlabs-ai@2533f77)) * **ccr:** skip CCR when model calls headroom_retrieve alongside user tools ([headroomlabs-ai#839](headroomlabs-ai#839)) ([30078f8](headroomlabs-ai@30078f8)) * **ccr:** use shared compression store ([headroomlabs-ai#875](headroomlabs-ai#875)) ([249af6c](headroomlabs-ai@249af6c)) * **ci:** correct comments, timeouts, and pip reliability in native e2e workflows ([headroomlabs-ai#878](headroomlabs-ai#878)) ([b716c8c](headroomlabs-ai@b716c8c)) * **ci:** pin cosign-installer to v3 (v4 does not exist) ([headroomlabs-ai#774](headroomlabs-ai#774)) ([199d693](headroomlabs-ai@199d693)) * **codex:** respect CODEX_HOME for wrap config ([headroomlabs-ai#731](headroomlabs-ai#731)) ([96abf38](headroomlabs-ai@96abf38)) * **content_router:** guard against empty compression output causing Anthropic 400 ([headroomlabs-ai#771](headroomlabs-ai#771)) ([2f9ff07](headroomlabs-ai@2f9ff07)) * **copilot:** use responses API for subscription reasoning models ([headroomlabs-ai#647](headroomlabs-ai#647)) ([84ac332](headroomlabs-ai@84ac332)) * correct preserved-entry index mapping in Gemini content round-trip ([headroomlabs-ai#836](headroomlabs-ai#836)) ([0ffe2b6](headroomlabs-ai@0ffe2b6)) * **dashboard:** stable 'Proxy $ Saved' hero tile under --workers > 1 ([headroomlabs-ai#481](headroomlabs-ai#481)) ([fd73b88](headroomlabs-ai@fd73b88)) * don't inject empty tools:[] when client omitted the tools field ([headroomlabs-ai#772](headroomlabs-ai#772)) ([574bbae](headroomlabs-ai@574bbae)) * harden Copilot API auth token handling ([headroomlabs-ai#557](headroomlabs-ai#557)) ([6b0c09f](headroomlabs-ai@6b0c09f)) * **health:** readyz verifies upstream connectivity, not just process liveness ([headroomlabs-ai#744](headroomlabs-ai#744)) ([5dfb446](headroomlabs-ai@5dfb446)) * **init:** guard persistent task startup ([headroomlabs-ai#616](headroomlabs-ai#616)) ([9252d85](headroomlabs-ai@9252d85)) * **init:** normalize Windows hook paths to forward slashes ([headroomlabs-ai#788](headroomlabs-ai#788)) ([6ea6e31](headroomlabs-ai@6ea6e31)) * **init:** suppress hook recovery output ([headroomlabs-ai#760](headroomlabs-ai#760)) ([b439599](headroomlabs-ai@b439599)) * **learn:** claude-cli streams output with idle timeout ([headroomlabs-ai#373](headroomlabs-ai#373)) ([9bff575](headroomlabs-ai@9bff575)) * make headroom wrap readiness probe timeout configurable for slow ML imports ([headroomlabs-ai#581](headroomlabs-ai#581)) ([163677b](headroomlabs-ai@163677b)) * **parser:** detect waste signals in Anthropic tool_result content blocks ([headroomlabs-ai#815](headroomlabs-ai#815)) ([929698a](headroomlabs-ai@929698a)) * **proxy:** F4 — trust X-Forwarded-* only behind allow-listed gateway ([d10bd5f](headroomlabs-ai@d10bd5f)) * **proxy:** lazy-import server to avoid fastapi crash ([headroomlabs-ai#442](headroomlabs-ai#442)) ([93c6937](headroomlabs-ai@93c6937)) * **proxy:** make CCR multi-worker warning conditional on backend ([headroomlabs-ai#770](headroomlabs-ai#770)) ([d76a729](headroomlabs-ai@d76a729)) * **proxy:** make Kompress eager preload cache-only so a cold cache can't block startup ([headroomlabs-ai#783](headroomlabs-ai#783)) ([841663d](headroomlabs-ai@841663d)) * **proxy:** restore Codex usage headers on WS and streaming SSE transports ([headroomlabs-ai#577](headroomlabs-ai#577)) ([headroomlabs-ai#794](headroomlabs-ai#794)) ([0ce68de](headroomlabs-ai@0ce68de)) * schema compaction must not drop property names that match DROP_KEYS ([headroomlabs-ai#785](headroomlabs-ai#785)) ([ae2122f](headroomlabs-ai@ae2122f)) * **security:** block DNS-rebinding on /debug/* and /stats/reset via Host-header allowlist ([headroomlabs-ai#605](headroomlabs-ai#605)) ([b4b5025](headroomlabs-ai@b4b5025)) * **ssl:** upstream httpx client inherits SSL_CERT_FILE, REQUESTS_CA_BUNDLE, NODE_EXTRA_CA_CERTS ([headroomlabs-ai#745](headroomlabs-ai#745)) ([e50fbb3](headroomlabs-ai@e50fbb3)) * suppress LiteLLM provider banner before import ([headroomlabs-ai#874](headroomlabs-ai#874)) ([f9384ef](headroomlabs-ai@f9384ef)) * **transforms:** use thread-local tree-sitter parsers to prevent pyo3 Unsendable panic ([headroomlabs-ai#604](headroomlabs-ai#604)) ([2ad300a](headroomlabs-ai@2ad300a)) * **wrap:** track shared proxy clients with markers ([headroomlabs-ai#877](headroomlabs-ai#877)) ([05bd56b](headroomlabs-ai@05bd56b)) ### Code Refactoring * extract litellm model resolution to shared utility ([ec7d006](headroomlabs-ai@ec7d006)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
chore: release main (headroomlabs-ai#607) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Merge pull request headroomlabs-ai#594 from chopratejas/release-pleas… …e--branches--main chore: release main
Merge pull request headroomlabs-ai#490 from chopratejas/refactor/memo… …ry-tool-handles Refactor/memory tool handles
Merge pull request headroomlabs-ai#485 from chopratejas/refactor/memo… …ry-tool-handles fix(memory): expose memory IDs in auto-tail + memory_list tool + ID-usage guidance
Merge pull request headroomlabs-ai#484 from chopratejas/refactor/memo… …ry-ranker-and-image-decision refactor(proxy): MemoryRanker + ImageCompressionDecision + branch-aware version-sync
Merge pull request headroomlabs-ai#483 from chopratejas/refactor/memo… …ry-system-uniformity fix(proxy): MemoryDecision contract + 3 bypass bugs + drop 500-char query cap
Merge pull request headroomlabs-ai#475 from chopratejas/fix/wrap-e2e-… …startup-timeout fix(tests): widen wrap-e2e openclaw startup timeout to 30s
PreviousNext