Open source · Free forever

Your agent rereads the same files.
You are paying for it.

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.

fewer tokens
0–0 %

measured on 8-language fixtures

agents wired
0

Claude · Codex · Gemini

telemetry sent
100 bytes

verified at every release

~ /you/projectdrip 0.1.0
$
→ 400 lines (2,403 tok, semantic-compressed)
$
→ [DRIP: unchanged]
$
→ +3 lines
$
→ [DRIP: delta | +3 −0 | 280 B]
$
DRIP Meter (Since Install)
──────────────────────────────────
Tokens saved:102.8K
Reduction:87 %
$ saved:$0.31
████████████████████▒▒▒▒ 87 %

Drop-in for the agents you already use

Claude Code
Codex CLI
Gemini CLI
MCP
Apache 2.0
Rust
Open source
Claude Code
Codex CLI
Gemini CLI
MCP
Apache 2.0
Rust
Open source
Claude Code
Codex CLI
Gemini CLI
MCP
Apache 2.0
Rust
Open source
Claude Code
Codex CLI
Gemini CLI
MCP
Apache 2.0
Rust
Open source
The problem

Coding agents bleed tokens on file reads

Your model rereads the same file five times in a session. You pay for it five times.

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.

$$

No visibility on what costs

Pricing dashboards show monthly invoices. They don't tell you which file your agent re-reads twenty times an hour.

Context limits hit faster

The more redundant input, the sooner Claude / Codex compact. Compactions throw away DRIP's baselines and force re-sends.

Before / after

Same workflow. 13 % of the input.

DRIP intercepts file-read calls and substitutes a delta or an `unchanged` sentinel. Same agent, same tools, dramatically smaller payloads.

Without DRIP
30,025 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)
read app.py     → 400 lines  (6,005 tok)
                              ─────────
                              30,025 tok
With DRIP
2,403 tok92 % saved
read 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 tok
Under the hood

A single Rust binary that pays for itself in a session

Delta on every re-read

First 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.

Semantic compression

13 languages recognised. Function bodies elided on first reads, signatures + imports + class declarations preserved. Verified zero structural loss on the 8-language benchmark fixtures.

Partial-read awareness

`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.

Edit certificates

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.

Context-compaction ledger

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.

DripMeter for macOS (optional)

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.

One init per agent

Three agents. One CLI.

DRIP wires into Claude Code via Pre/PostToolUse hooks and into Codex/Gemini via MCP. One command per agent — idempotent, non-destructive.

Claude Code logo

Claude Code

PreToolUse / PostToolUse hooks

$drip init -g

Global (~/.claude/)

Codex CLI logo

Codex CLI

MCP server (read_file)

$drip init --agent codex

~/.codex/config.toml

Gemini CLI logo

Gemini CLI

MCP server (read_file)

$drip init -g --agent gemini

Global (~/.gemini/)

Companion app · macOS

Watch your savings build up — live, in your menu bar.

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.

  • 100% on-device
  • macOS 14+
  • Swift 6.2
  • Zero network
  • Open source
DripMeterUpdated 2m ago
108.2Ktokens saved
Saved87 %
Money$0.31
CO₂28 g
Per agent
Claude Code62 K
12 sessions · 5m ago94%
Codex28 K
3 sessions · 1h ago71%
Gemini0
Hooks installed · waiting0%
Cost projection
$249/ month at Opus 4.7

Live menu-bar meter

A tiny green droplet icon that fills proportionally to your % saved. Click to expand.

Per-agent breakdown

Claude Code, Codex, Gemini — see where your savings come from, with their official logos and install-detection badges.

Cost projection

Pick Sonnet 4.6, Opus 4.7, GPT-5 or Gemini 2.5 — DripMeter extrapolates your savings per day, week, month, year.

Markdown usage report

One click exports a portable .md with lifetime totals, streak, 7d/30d tables and per-agent breakdown.

Compaction tracker

Surfaces DRIP's v9 ledger: how often your agent compacts, how many tokens were re-sent, with a 'quality' score.

Real-time activity feed

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/dripmeter
And there's more

Three pieces of the Overview tab — each one's a live SwiftUI view in the real app.

12-day streak

Streak panel

Pulsing flame, week strip, target progress.

Today12-day streak
18.2Ksaved · target 25K
M
T
W
T
F
S
S
31.5K avg / day

Rollup tiles

7d / 30d toggle, daily average, peak day.

Rollup
7d30d
Saved
220K
Avg/d
31.5K
Peak
80K
Active
6/7
73 active days

Activity heatmap

90 days, log-bucketed intensity, today ringed.

Activity~3 months
lessmore
Install

One command per platform.

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.

  1. 1

    Install the binary

    Single 4 MB Rust binary. macOS Apple Silicon + Intel, Linux x86_64 + arm64, Windows x86_64.

    $brew install drip-cli/drip/drip

    Want the menu-bar app too? brew install --cask drip-cli/drip/dripmeter

  2. 2

    Wire it into your agent

    Idempotent and non-destructive — drip init writes hooks via tmp-file + rename(2), never overwrites your existing CLAUDE.md or settings.json.

    $drip init -g
  3. 3

    Watch the savings

    drip meter prints the human-readable savings since install. Or pipe --json into your own dashboard.

    $drip meter
FAQ

Questions, honest answers

No. 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.

The team

Built by Perform Code, in Lille.

Three engineers shipping the boring infrastructure that AI agents need to stop bleeding tokens. Open source by default, no VC ask, no upsell.

Maxence Bombeeck

Founder · Designer & Swift

Designed the brand and built DripMeter. Owns the macOS Swift surface end-to-end.

@MaxenceB59

Hugo Barbosa

Founder · Core DRIP

Wrote the DRIP Rust core: session model, semantic compression, delta engine, agent hooks.

@Hugobrbs

Hugo Ponthieux

Founder · DevOps & Infra

Owns release pipelines, benchmarks, infra and distribution channels.

@Hugoy8

Stop paying for the same file twice.

Single Rust binary, zero telemetry. DripMeter keeps the score in your menu bar. Save 34–88 % of input tokens from session one.