Same file, again and again
A 400-line app.py read five times = 2 000 lines sent to the model — even though 397 of them never changed.
DRIP sits between your AI agent and the filesystem — replacing every re-read with a delta or an unchanged sentinel. Same workflow, 34–88 % fewer tokens.
Single Rust binary. SQLite locally. No daemon, no network call, no telemetry.
measured on 8-language fixtures
Claude · Codex · Gemini
verified at every release
Drop-in for the agents you already use
Your model rereads the same file five times in a session. You pay for it five times.
A 400-line app.py read five times = 2 000 lines sent to the model — even though 397 of them never changed.
Pricing dashboards show monthly invoices. They don't tell you which file your agent re-reads twenty times an hour.
The more redundant input, the sooner Claude / Codex compact. Compactions throw away DRIP's baselines and force re-sends.
DRIP intercepts file-read calls and substitutes a delta or an `unchanged` sentinel. Same agent, same tools, dramatically smaller payloads.
read app.py → 400 lines (6,005 tok)
read app.py → 400 lines (6,005 tok)
read app.py → 400 lines (6,005 tok)
read app.py → 400 lines (6,005 tok)
read app.py → 400 lines (6,005 tok)
─────────
30,025 tokread app.py → 400 lines (2,403 tok, semantic-compressed)
read app.py → [DRIP: unchanged]
read app.py → [DRIP: unchanged]
read app.py → [DRIP: unchanged]
read app.py → [DRIP: unchanged]
─────────
2,403 tokFirst read sends the file. Every subsequent read becomes a unified diff via `similar`, an `[unchanged]` sentinel, or — for big diffs — a fallback to full content.
13 languages recognised. Function bodies elided on first reads, signatures + imports + class declarations preserved. Verified zero structural loss on the 8-language benchmark fixtures.
`Read(file, offset, limit)` is window-scoped: DRIP diffs only the requested range, returns an `unchanged (lines X-Y)` sentinel when the window is byte-identical, and never mutates the file's full-content baseline.
Read a file right after editing it and DRIP returns a 390-byte attestation (file hash + touched lines + symbol names) instead of letting the agent re-read 600 lines it just wrote.
Schema v9 tracks how often Claude / Codex compact, how many tokens were re-sent, and decorates first reads with `↺ context was compacted` so the agent knows why.
Companion menu-bar app surfaces your savings live: per-agent breakdown, top files, sparkline, real-time activity feed. Reads DRIP's local SQLite, no network.
DRIP wires into Claude Code via Pre/PostToolUse hooks and into Codex/Gemini via MCP. One command per agent — idempotent, non-destructive.
PreToolUse / PostToolUse hooks
drip init -gGlobal (~/.claude/)
MCP server (read_file)
drip init --agent codex~/.codex/config.toml
MCP server (read_file)
drip init -g --agent geminiGlobal (~/.gemini/)
DripMeter is the macOS companion app for DRIP. It reads the local SQLite (no telemetry) and surfaces your savings in real time: per agent, per file, per cost model. One click and it's running.
A tiny green droplet icon that fills proportionally to your % saved. Click to expand.
Claude Code, Codex, Gemini — see where your savings come from, with their official logos and install-detection badges.
Pick Sonnet 4.6, Opus 4.7, GPT-5 or Gemini 2.5 — DripMeter extrapolates your savings per day, week, month, year.
One click exports a portable .md with lifetime totals, streak, 7d/30d tables and per-agent breakdown.
Surfaces DRIP's v9 ledger: how often your agent compacts, how many tokens were re-sent, with a 'quality' score.
Watch DRIP intercept reads as they happen, FSEvents-driven. Click any row to open the file in your editor.
brew install --cask drip-cli/drip/dripmeterThree pieces of the Overview tab — each one's a live SwiftUI view in the real app.
Pulsing flame, week strip, target progress.
7d / 30d toggle, daily average, peak day.
90 days, log-bucketed intensity, today ringed.
DRIP is a single Rust binary. macOS via Homebrew, Linux via the install script (musl-static auto-detected), Windows via the prebuilt zip, or `cargo install drip-cli` anywhere.
Single 4 MB Rust binary. macOS Apple Silicon + Intel, Linux x86_64 + arm64, Windows x86_64.
brew install drip-cli/drip/dripWant the menu-bar app too? brew install --cask drip-cli/drip/dripmeter
Idempotent and non-destructive — drip init writes hooks via tmp-file + rename(2), never overwrites your existing CLAUDE.md or settings.json.
drip init -gdrip meter prints the human-readable savings since install. Or pipe --json into your own dashboard.
drip meterNo. Single Rust binary, single SQLite database (~/Library/Application Support/drip/sessions.db on macOS). No daemon, no network call, no telemetry. Verified on every release with `cargo machete` plus a manual audit of the dependency graph.
Measured 34 % to 88 % on an 8-language benchmark fixture (8 languages × 4 workflow styles), with verified zero structural loss in semantic compression. See BENCHMARKS.md in the repo for the full table.
Claude Code (PreToolUse / PostToolUse hooks), Codex CLI (MCP server), Gemini CLI (MCP server). Cursor's built-in read tool bypasses MCP and is not on the roadmap — DRIP would only see calls the model deliberately routed through it, which isn't the contract the other agents get.
No. drip init writes via tmp-file + rename(2), preserves Unix mode bits, never touches hand-edited content in CLAUDE.md or settings.json. drip uninstall reverses every byte DRIP wrote — pre-existing hooks and unrelated MCP servers stay intact.
macOS arm64 + x86_64, Linux x86_64 + arm64, WSL, Windows x86_64. The Rust toolchain ≥ 1.95 builds it from source on any platform that has cargo.
drip meter, drip sessions, drip replay are the CLI surfaces. For macOS users, DripMeter is a companion menu-bar app that reads the same SQLite and surfaces savings live, with per-agent breakdown and click-through to your IDE.
Three engineers shipping the boring infrastructure that AI agents need to stop bleeding tokens. Open source by default, no VC ask, no upsell.
Founder · Designer & Swift
Designed the brand and built DripMeter. Owns the macOS Swift surface end-to-end.
@MaxenceB59Founder · Core DRIP
Wrote the DRIP Rust core: session model, semantic compression, delta engine, agent hooks.
@HugobrbsFounder · DevOps & Infra
Owns release pipelines, benchmarks, infra and distribution channels.
@Hugoy8Single Rust binary, zero telemetry. DripMeter keeps the score in your menu bar. Save 34–88 % of input tokens from session one.