Tejas Chopra
Tejas Chopra
## Summary Ships **Phase 1** of `headroom xray` — a multi-CLI context-bloat diagnostic command: - New Rust crate `crates/headroom-xray/` produces the `headroom-xray` binary. - Thin wrapper around **CodeBurn** (MIT, 25+...
## Summary Follow-up to PRs #500 (CCR workspace scoping) and #501 (memory READ-ONLY framing + fail-closed router). The post-merge review surfaced **5 gaps**; this PR closes all of them. |...
## Summary Add `headroom wrap opencode` to launch OpenCode with all API calls routed through the Headroom proxy for context compression. ## Background OpenCode (https://opencode.ai) is an open-source terminal AI...
## Threat model Pre-F3, every request's tool-call patterns aggregated into one global pool keyed by `(auth_mode, model_family, sig_hash)`. That works for an OSS single-tenant deploy, but in a multi-tenant SaaS...
eager_load_compressors only instantiated wrapper classes; the heavy work (ONNX session build, model download, AST/JIT warmup) was deferred until the first real request. Logs confirmed: "Kompress model pre-loaded at startup" fired...
## Threat model The proxy was trusting `X-Forwarded-For`, `X-Forwarded-Proto`, and `X-Forwarded-Host` from any client. A malicious upstream client could: - forge `X-Forwarded-For` to **rotate rate-limit buckets** (the Anthropic handler keys...
## Summary - Promotes `make test-parity` from nightly cron (with `continue-on-error: true`) to a per-PR `parity` job in `.github/workflows/rust.yml`. `Diff` outcomes now block merge; `Skipped` outcomes are tolerated by default...
## Summary The Rust proxy now follows exactly one compression rule: > Find the last user message. Freeze every byte before it. In the new turn, walk for tool outputs...
## Security advisory `cargo audit` flags **RUSTSEC-2025-0020**: `pyo3` versions before 0.24.1 have a buffer-overflow risk in `PyString::from_object`. - Advisory: https://rustsec.org/advisories/RUSTSEC-2025-0020 - Current: `pyo3 0.22.6` - Required: `pyo3 >= 0.24.1` ##...
## Status: parked, scheduled to land alongside Phase 6 (ONNX migration) Parking this so we can finish the Rust proxy (Phase 1) and per-provider cutover (Phase 4) first. The architecture...