mrkeyoor.com_
Thu 17 Sept 17:37 UTC
Dev Toolsevaluationupdated 05 Sept 2026

rtk review

RTK is a Rust command-line proxy that shortens output from Git, test runners, linters, package managers, and other developer commands before an AI coding agent reads it. It solves a narrow problem: noisy shell output consumes model context, while the developer still needs failures, counts, and useful file details.

+1,032stars / 7d
Verdict

Our RTK run installed 160 packages and passed all 2,704 tests, so it earns a trial for developers whose coding agents consume long shell output. Begin with interactive, read-heavy commands and keep raw recovery enabled. Current reports of dropped diagnostics and incorrect exit status make broad CI rewriting a separate decision that needs fixtures for every wrapped command.

We ran it

Lab card: what happened when we ran rtkScreenshot of rtk (www.rtk-ai.app)
Install✓ · 24s160 packages
Build✓ · 64s
Tests✓ · 70s2704 passed · 0 failed of 2704 (cargo test)
Repo412 files~93,976 lines of source · 4.3 MB · 5 CI workflows · tests dir

Answers from our run

Does rtk build from source?

Dependencies installed in 24 seconds (160 packages), and the build succeeded in 64 seconds. We cloned commit 29f9bb7 into a clean Debian container with 3 CPUs and no project-specific setup.

Do rtk's tests pass?

Yes: 2704 of 2704 passed when we ran the project's own test command (cargo test). Some failures need services or credentials a bare container does not have.

Who should not use rtk?

Claude Code users who mostly rely on its built-in Read, Grep, and Glob tools: the README says those calls bypass RTK's Bash hook.

What are the alternatives to rtk?

Aider, LiteLLM, LLM. Our RTK run installed 160 packages and passed all 2,704 tests, so it earns a trial for developers whose coding agents consume long shell output.

Setup4/524-second install; agent hook setup and restart still required
Docs5/5Clear install, agent, command, config, privacy, and recovery guides
Community4/5Fast releases and active triage, with a very large open queue
Maturity3/52,704 tests passed, but open reports question exit-code fidelity

Discussed on

  1. hnRtk – reduce Claude Code token usage18 points
  2. hnCLI proxy that reduces LLM token consumption by 60-90% on common dev commands5 points
  3. hnShow HN: RTK – Wrap your CLI commands, save 60-90% of tokens in AI coding agents4 points
  4. hnCLI proxy that reduces LLM token consumption by 60-90% on common dev commands4 points
  5. hnRtk – High-performance CLI proxy to minimize LLM token consumption4 points

Who it’s for

Developers whose Claude Code, Codex, Cursor, Copilot, or other supported agent sessions spend too much context on shell output.
Teams with long test, build, and log output where failures matter more than thousands of successful lines.
Engineers willing to test each command adapter against their own tool versions before enabling broad hook coverage.
Users who want local output filtering without a hosted account or API key.

Who it’s NOT for

Claude Code users who mostly rely on its built-in Read, Grep, and Glob tools: the README says those calls bypass RTK's Bash hook.
CI pipelines that require verified exit-code and diagnostic fidelity today: open issues #3843 and #3870 report specific paths where a failed wrapped command can read as success or lose stderr.
Teams that need billing-grade token accounting: RTK estimates tokens as bytes divided by 4, and its README says output reduction is different from bill reduction.
Organizations that prohibit a global pre-execution hook from changing agent commands: the recommended setup patches the agent's hook configuration.
Native Windows users unwilling to install ripgrep: the README says some filters shell out to rg and warn when it is missing.

Setup reality

Our sandbox install at commit 29f9bb7 succeeded in 24 seconds and installed 160 packages. The build succeeded in 64 seconds, and cargo test finished in 70 seconds with 2,704 of 2,704 tests passing. The checkout held 412 files, about 93,976 lines of source, and 4.3 MB.

RTK needs no hosted account, service, or API key for its core path. After installing the binary, users run the rtk init variant for their agent, restart that client, and verify the hook. Global setup writes hook and instruction files; telemetry requires an explicit opt-in.

Prebuilt binaries and Homebrew avoid the source build we measured. Cargo users must install from Git because another crate uses the same name. Claude Code's built-in file tools bypass the Bash hook, and some native Windows filters also need rg on the PATH.

RTK v0.48.0 filters more than 100 developer commands

RTK v0.48.0 wraps more than 100 developer commands and filters their output before a coding agent sees it. Git summaries keep the changes, test runners collapse passing cases, file tools group or trim results, and log commands deduplicate repeated lines. The agent invokes commands, while a hook rewrites supported Bash calls to RTK. It targets context waste when a successful test run produces pages of output.

The design is command-specific. cargo test, git diff, pytest, docker logs, and kubectl each need different parsing, so RTK routes them through separate adapters instead of cutting every stream at the same line count. Our measured checkout contained 412 files and about 93,976 source lines. That scale explains the breadth, and it also means buyers are trusting many small parsers to track changes in the tools they wrap.

Version 0.48.0 hooks Bash, while built-in file tools bypass it

RTK v0.48.0 documents integrations for Claude Code, Codex, Copilot, Cursor, Gemini CLI, Windsurf, and several other agents. Hook-capable clients can rewrite a supported shell command before execution. Codex uses instruction files instead. Claude Code's built-in Read, Grep, and Glob calls never reach its Bash hook, so those workflows need explicit RTK file commands or ordinary shell equivalents to receive filtering.

Our 3-CPU sandbox result shows that source setup is manageable, although agent integration remains a separate local change. The recommended global initialization writes hook and instruction files, may patch an agent settings file, and requires a client restart. rtk init --show checks the installed integration. A team should inspect those files, start with a small command set, and keep exclusions for tools whose exact output feeds another program.

What happened when we ran it

Our sandbox installed commit 29f9bb7 in 24 seconds and pulled 160 packages. Our test method used an unprivileged rust:1-bookworm container with 3 CPUs, 12 GB of RAM, and no secrets. The checkout contained 412 files, about 93,976 lines of source, and occupied 4.3 MB. Installation completed without a reported failure.

The build succeeded in 64 seconds. cargo test then finished in 70 seconds with 2,704 passed and 0 failed out of 2,704 tests. The repository contained 5 CI workflow files and a tests directory. It did not contain a Dockerfile. Those are the complete install, build, and test outcomes from our run of that commit.

RTK 0.46.0 issue reports show some failed commands reading as success

Open issue #3843 reports that RTK 0.46.0 and the then-current development branch could return success after a second git diff or git show invocation failed, dropping the external driver's diagnostic. Issue #3870 reports a golangci-lint adapter that maps the tool's issues-found status to success, discards stderr on another error path, and can print "No issues found" after a hard error. Both reports remained open when checked.

The 2,704 passing tests are meaningful, yet these newer reports show why adapter compatibility needs its own acceptance set. RTK can save full output when a command fails, expose raw output at the highest verbosity, bypass filtering through rtk proxy, and exclude selected commands in configuration. Start with interactive commands where a developer can notice a strange summary. Keep deployment gates and machine-parsed output on their original path until representative failures behave correctly.

RTK estimates one token for every 4 bytes of command output

RTK estimates one token for every 4 bytes, without using a model tokenizer. Its reduction percentage describes Bash output removed before the agent reads it. The final API bill also includes prompts, conversation history, and model output, so the dashboard cannot predict the same percentage of saved money. It is useful as a directional counter for command text, provided teams compare the final transcript received by their agent.

Our source install pulled 160 packages for a 4.3 MB checkout, while release binaries avoid that Rust dependency tree. The core utility stays local and needs no provider credential. Its gain, discover, and session commands read locally tracked usage. Optional daily telemetry requires consent; the README says it sends aggregate command names and usage data while excluding source code, file paths, command arguments, secrets, and environment variables.

Version 0.48.0 shipped on 2026-09-04, one day before the last push

GitHub showed 78,619 stars, 1,053 open issues, and 1,035 open pull requests on 2026-09-05. The repository was pushed that day, while v0.48.0 was published on 2026-09-04 with Bun and Deno support plus fixes across filters, discovery, telemetry, and command routing. The queue is unusually large, but the dated release and issue activity show a project receiving code and detailed bug reports rather than one coasting on stars.

Our 2,704-test run covered version 0.42.4 at commit 29f9bb7, not the current v0.48.0 release. That distinction matters because RTK's value depends on parsers matching current output formats and preserving failures. The newer release activity is a health signal; it does not extend our passing result to code we did not run. Evaluate the exact binary version against the external tools and locales used in production.

RTK fits beneath an existing agent when shell noise is the bottleneck

RTK v0.48.0 makes the most sense for a developer who already likes an agent and repeatedly sees useful context displaced by Git, test, build, or log chatter. Trial it on listings, status summaries, passing test output, and repetitive logs. Use the saved raw output when a summary looks odd. Workflows dominated by built-in file tools, short commands, or already compact agent output have less room to benefit.

The 24-second source install makes an experiment cheap, but the alternative should match the bottleneck. Aider replaces the coding workflow, LiteLLM manages model traffic and spend, and Simon Willison's LLM controls direct prompt calls from a terminal. RTK is the more focused choice when the agent stays and shell output is the waste. Keep its version pinned, preserve raw recovery, and promote each adapter only after a failing fixture returns the right text and status.

Alternatives

ProjectWhat it isPick it when
Aider gh↗A terminal pair-programming agent that manages repository context as part of the coding workflow.pick this instead when you want a complete coding agent rather than an output filter beneath an agent you already use.
LiteLLM gh↗A model gateway with provider routing, usage tracking, budgets, and logging.pick this instead when API spend and model routing are the problem, rather than verbose shell output.
LLM gh↗A command-line tool for running prompts, logging responses, and extending model access with plugins.pick this instead when you control model calls from the terminal and do not need automatic rewriting of developer commands.

What people are saying

  1. [github-trending] rtk-ai/rtk

Sources

  1. RTK GitHub repository
  2. RTK documentation
  3. RTK v0.48.0 release
  4. Measured commit 29f9bb7
  5. Issue 3843: git diff and git show can drop a failure
  6. Issue 3870: golangci-lint failure handling
  7. Issue 3839: localized git output

More dev tools reviews

rspack · vitest · swagger-ui · Telegram · termux-app · omnyssh · the whole board →