RTK
Your AI agent drowns in noise.
RTK cleans it up.
Diagram: a dense grid of tokens fills 86% of the AI context window, close to autocompact. It flows through the RTK filter, which strips the CLI output noise and leaves the meaningful lines: the same window back down to 73% used, with room to think.
Starred by developers at
+1,100 more companies
01 / The problem
Your context window is valuable
AI agents don't need more output. They need more relevant output.
Chart: a Claude Code context window late in a session: 86% used, close to autocompact. The fixed costs are tiny (system prompt and tools 3%, MCP tools 1%, memory files 1%, skills 0.5%); what fills the window is conversation history at 62% and CLI output and logs at 18%. After RTK filters that output the CLI share drops to 5% and total usage to 73%, back out of compaction territory.
02 / The solution
Install & forget
RTK is a thin, open proxy layer. It adds nothing to your workflow: it only takes the noise away.
Built for developers
03 / See it in action
The difference is clear
Compare real output before and after RTK, and see what gets filtered.
Why was this removed?
$ cargo build Compiling libc v0.2.155 Compiling proc-macro2 v1.0.85 Compiling unicode-ident v1.0.12 Compiling quote v1.0.36 Compiling syn v2.0.66 Compiling cfg-if v1.0.0 Compiling once_cell v1.19.0 warning: unused variable: `raw` --> src/filter.rs:214:9 warning: field is never read: `depth` --> src/tree.rs:87:5 Compiling serde v1.0.197 Compiling anyhow v1.0.79 ⋮ 1,026 more lines Finished dev [unoptimized] in 32.48s
$ rtk cargo build ✓ build finished in 32.4s · 214 crates compiled · 2 warnings: filter.rs:214, tree.rs:87
$ cargo test running 184 tests test filter::tests::collapses_dupes ... ok test filter::tests::keeps_failures ... ok test parse::tests::ansi_codes ... ok test parse::tests::empty_input ... ok test tree::tests::depth_limit ... ok test gain::tests::daily_rollup ... ok test proxy::tests::passthrough ... ok test proxy::tests::exit_codes ... ok test git::tests::short_status ... ok test git::tests::diff_stat ... ok ⋮ 1,829 more lines test result: ok. 184 passed; 0 failed
$ rtk cargo test ✓ 184 passed · 0 failed · 3 ignored · finished in 3.2s
$ git status On branch feat/filter-v2 Your branch is ahead of 'origin/feat/filter-v2' by 3 commits. (use "git push" to publish your commits) Changes not staged for commit: (use "git add <file>..." to update) (use "git restore <file>..." to discard) modified: src/filter.rs modified: src/proxy.rs Untracked files: (use "git add <file>..." to include) tests/fixtures/big_output.log ⋮ 21 more lines
$ rtk git status feat/filter-v2 ↑3 M src/filter.rs M src/proxy.rs ? tests/fixtures/big_output.log
$ find . -name "*.rs" ./src/main.rs ./src/filter.rs ./src/proxy.rs ./src/commands/git.rs ./src/commands/test.rs ./src/commands/grep.rs ./target/debug/build/libc-8f00…/out/lib.rs ./target/debug/build/serde-71ab…/out/de.rs ./target/debug/build/syn-90c1…/out/gen.rs ⋮ 303 more lines
$ rtk find "*.rs" . 29 matches (target/ excluded) src/ 14 · commands/ 9 · tests/ 6
$ grep -rn "pub fn" src/ src/main.rs:12:pub fn main() { src/filter.rs:31:pub fn compress(input: &str) src/filter.rs:88:pub fn strip_ansi(s: &str) src/proxy.rs:19:pub fn spawn(cmd: Command) src/commands/git.rs:9:pub fn status() src/commands/git.rs:44:pub fn diff() src/commands/test.rs:15:pub fn run() ⋮ 210 more lines
$ rtk grep "pub fn" src/ 67 matches across 12 files filter.rs 12 · proxy.rs 8 · git.rs 6 main.rs 3 · 38 more
04 / The evidence
Measure your rtk gains
Real rtk gain output from a developer's daily use.
After a few weeks of daily use: 15,720 commands processed, 130M tokens saved.
Daily, weekly and monthly stats by command. Run rtk gain to see yours.
#show-your-gains on Discord 05 / The impact
More efficiency
Less noise. More useful context. Fewer tokens.
Less noise
Cleaner context window.
Better reasoning
More relevant information reaches the agent.
Fewer tokens
Less unnecessary output enters the context.
Works with your AI coding stack
- Claude Code
- Cursor
- GitHub Copilot
- Codex
- Gemini CLI
- Windsurf
- Cline
- OpenCode
06 / Get started
Running in 30 seconds
Install, activate the hook, and every command is compressed automatically.
Quick install
One-liner for Linux & macOS.
$ curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh Homebrew
macOS & Linux.
$ brew install rtk-ai/tap/rtk $ brew upgrade rtk-ai/tap/rtk Then activate the auto-rewrite hook
$ rtk init --global Installs a PreToolUse hook in Claude Code settings.json: every Bash call is rewritten automatically.
Full install guide →$ rtk init --global --agent cursor Configures Cursor's .cursorrules to pipe Bash commands through rtk.
Full install guide →$ rtk init --global --agent <name> Installs a global shell hook: works with Aider, Gemini CLI, Codex, Windsurf, and any terminal AI tool.
Full install guide →Questions
Frequently asked
What is RTK (Rust Token Killer)?
RTK is an open-source CLI tool that compresses command outputs before they reach the AI context window. It cuts up to 90% of that output noise with zero configuration changes, which leaves more of the context window for reasoning and lowers the token cost of every command that runs. RTK is written in Rust, Apache 2.0 licensed, and works transparently with Claude Code, Cursor, and any terminal-based AI assistant.
How many tokens does RTK actually save?
On the commands RTK rewrites, output drops by 56% on average, and by up to 90% on the noisiest ones. Across the community that adds up to billions of tokens saved. The exact figure depends on the command, so the benchmarks page publishes the methodology and the per-command results, and the blog covers what independent studies measured, including the cases where RTK did not come out ahead. For your own numbers, run rtk gain after a few days of use.
Is RTK free? Are there usage limits?
RTK is completely free. It is open source under the Apache 2.0 license, with source code available on GitHub at github.com/rtk-ai/rtk. There are no usage limits, no API keys required and no accounts. Telemetry is opt-in: it is off until you explicitly enable it, and it collects no personal data. For teams, RTK Pro is available at pro.rtk-ai.app.
Which AI coding tools and commands does RTK support?
RTK works with Claude Code (Anthropic), Cursor, Gemini CLI, Aider, and any AI assistant that reads terminal output. It supports all major CLI commands: cargo test, pytest, go test, git diff, git status, git log, grep, find, ls, pnpm list, tsc, eslint, prisma, docker, kubectl, and more.
How does RTK work without changing my workflow?
Running rtk init --global installs a PreToolUse hook in Claude Code that automatically rewrites Bash commands to rtk equivalents at the proxy layer. You continue using your normal commands. RTK intercepts and compresses the output before it enters the context window, with no manual changes to prompts or workflows needed.
Does RTK affect code quality or AI reasoning accuracy?
No. RTK removes verbose boilerplate and repetitive output noise, not meaningful content. Test failures, error messages, diffs, and stack traces are preserved in full. The AI receives the same essential information with far less noise around it, which leaves more of the context window for reasoning.
RTK Pro
The AI Control Layer for your team
RTK runs on each developer’s machine. RTK Pro connects those machines into one control layer and brings the whole team on board with cost analytics, security guardrails and governance.
-
Observability
Detailed analysis across the team: usage and cost per project and per developer. See what actually costs you, and define real token efficiency metrics.
-
Security
Every developer you onboard arrives behind guardrails: secret leaks blocked, dangerous actions stopped, sensitive data anonymized.
-
Governance
Fine-grained RBAC, ACLs and project management. A new team member connects once and arrives set up: compression, guardrails, observability, skills, MCP.
The CLI stays free and open source.