Pixel vs RTK

A Rust proxy that rewrites an agent's shell commands and compresses what they print: build logs, test runs, Git output.

Updated

Short answer

They cut different tokens, so they add up. RTK shortens what a command prints once the agent has run it; Pixel shortens what the agent reads to find its way, by answering from an index instead of whole files. In Claude Code, pixel install keeps an existing RTK hook working: Pixel's guard takes the searches it rewrites and hands every other shell call to RTK, so one hook answers each call.

Side by side

Not benchmarked. No figure: how Pixel and RTK work, side by side. Nothing on this page is a measurement.

MeasurePixelRTK
What it shortensWhat the agent reads to find codeWhat a command prints
HowAnswers from a local indexFilters and summarises command output
Callers, blast radius, Git historyYesNo
Build and test logsLeft as they areCompressed
Running both in Claude CodeOne guard hook, RTK delegatedIts hook, adopted by pixel install

Where RTK wins

It compresses the output of builds, tests, Git and other shell commands, which Pixel leaves as they are.

How they differ

RTK sits between the agent and its shell: cargo build, git status or a test run go through it, and the agent gets a short summary instead of the full log. Pixel works before that, when the agent looks for code: pixel scope-task names the files a task starts in, pixel list-signatures outlines a large file, and pixel impact lists a symbol’s callers and callees, so the agent opens fewer whole files.

Running both

Install RTK first, then run pixel install. In Claude Code, only one PreToolUse hook should rewrite a shell call, so Pixel adopts RTK’s exact rtk hook claude registration: its guard rewrites the searches it knows (grep, rg) and hands every other call to RTK. The registration it adopted is saved in .claude/pixel-rtk-hooks.json and goes back into your settings when you uninstall Pixel. pixel doctor reports a backup left without a guard to use it.

Choosing

Pick RTK if your agent’s context fills with build and test output. Pick Pixel if it fills with files opened to find its way, and for callers, blast radius and Git history. If both happen, run both.