|
| 1 | +# AGENTS.md — Kompact Context Optimization Proxy |
| 2 | + |
| 3 | +## What is Kompact? |
| 4 | + |
| 5 | +A transparent proxy that optimizes LLM context through multi-layer transforms. |
| 6 | +Sits between agents (Claude Code, Cursor, etc.) and providers (Anthropic, OpenAI). |
| 7 | + |
| 8 | +## Architecture |
| 9 | + |
| 10 | +``` |
| 11 | +Request → Proxy → [Layer 1: Schema] → [Layer 2: Content] → [Layer 3: History] → [Layer 4: Cache] → Provider |
| 12 | +``` |
| 13 | + |
| 14 | +## Entry Points |
| 15 | + |
| 16 | +| What | Where | Notes | |
| 17 | +|------|-------|-------| |
| 18 | +| CLI | `src/kompact/__main__.py` | `kompact proxy --port 7878` | |
| 19 | +| Proxy server | `src/kompact/proxy/server.py` | FastAPI, intercepts API requests | |
| 20 | +| Transform pipeline | `src/kompact/transforms/pipeline.py` | Orchestrates all transforms | |
| 21 | +| Configuration | `src/kompact/config.py` | Pydantic settings | |
| 22 | +| Core types | `src/kompact/types.py` | Message, ToolOutput, TransformResult | |
| 23 | + |
| 24 | +## Transforms (each is independent, pure function) |
| 25 | + |
| 26 | +| Transform | File | Layer | Typical Savings | |
| 27 | +|-----------|------|-------|-----------------| |
| 28 | +| TOON format | `src/kompact/transforms/toon.py` | 2 (Content) | 30-60% on JSON arrays | |
| 29 | +| Observation masker | `src/kompact/transforms/observation_masker.py` | 3 (History) | 50% on old tool outputs | |
| 30 | +| Cache aligner | `src/kompact/transforms/cache_aligner.py` | 4 (Cache) | Enables provider caching | |
| 31 | +| JSON crusher | `src/kompact/transforms/json_crusher.py` | 2 (Content) | 40-80% on structured data | |
| 32 | +| Schema optimizer | `src/kompact/transforms/schema_optimizer.py` | 1 (Schema) | 50-90% on tool defs | |
| 33 | +| Code compressor | `src/kompact/transforms/code_compressor.py` | 2 (Content) | ~70% on code blocks | |
| 34 | +| Log compressor | `src/kompact/transforms/log_compressor.py` | 2 (Content) | 60-90% on log output | |
| 35 | + |
| 36 | +## Key Invariants |
| 37 | + |
| 38 | +1. **All transforms are pure functions**: `list[Message] → TransformResult` |
| 39 | +2. **No transform modifies user messages** — only assistant/tool/system content |
| 40 | +3. **Every transform tracks `tokens_saved`** via `TransformResult` |
| 41 | +4. **Transforms are composable** — pipeline runs them in sequence |
| 42 | + |
| 43 | +## Documentation |
| 44 | + |
| 45 | +| Doc | Path | Purpose | |
| 46 | +|-----|------|---------| |
| 47 | +| PRD | `docs/prd.md` | Product requirements | |
| 48 | +| SDD | `docs/sdd.md` | System design | |
| 49 | +| Architecture | `docs/architecture.md` | Layer details | |
| 50 | +| Benchmarks | `docs/benchmarks.md` | Evaluation strategy | |
| 51 | +| Quality | `docs/quality.md` | Quality grades per domain | |
| 52 | +| Research | `docs/research/` | SOTA survey, competitors, economics | |
| 53 | + |
| 54 | +## Testing |
| 55 | + |
| 56 | +```bash |
| 57 | +uv run pytest # All tests |
| 58 | +uv run pytest tests/test_toon.py # Single transform |
| 59 | +uv run python benchmarks/compression_ratio.py # Benchmarks |
| 60 | +``` |
| 61 | + |
| 62 | +## Quick Start |
| 63 | + |
| 64 | +```bash |
| 65 | +uv sync |
| 66 | +uv run kompact proxy --port 7878 |
| 67 | +# Then: ANTHROPIC_BASE_URL=http://localhost:7878 claude |
| 68 | +``` |
0 commit comments