{"id":43657228,"url":"https://github.com/rtk-ai/rtk","last_synced_at":"2026-04-01T17:33:59.621Z","repository":{"id":334224726,"uuid":"1139971460","full_name":"rtk-ai/rtk","owner":"rtk-ai","description":"CLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies","archived":false,"fork":false,"pushed_at":"2026-03-06T14:22:19.000Z","size":1076,"stargazers_count":3611,"open_issues_count":134,"forks_count":205,"subscribers_count":10,"default_branch":"master","last_synced_at":"2026-03-06T15:49:29.789Z","etag":null,"topics":["agentic-coding","ai-coding","anthropic","claude-code","cli","command-line-tool","cost-reduction","developer-tools","llm","open-source","productivity","rust","token-optimization"],"latest_commit_sha":null,"homepage":"https://www.rtk-ai.app","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rtk-ai.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-22T16:54:16.000Z","updated_at":"2026-03-06T15:49:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rtk-ai/rtk","commit_stats":null,"previous_names":["pszymkowiak/rtk","rtk-ai/rtk"],"tags_count":49,"template":false,"template_full_name":null,"purl":"pkg:github/rtk-ai/rtk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtk-ai%2Frtk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtk-ai%2Frtk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtk-ai%2Frtk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtk-ai%2Frtk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rtk-ai","download_url":"https://codeload.github.com/rtk-ai/rtk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rtk-ai%2Frtk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30279777,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-08T20:45:49.896Z","status":"ssl_error","status_checked_at":"2026-03-08T20:45:49.525Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-coding","ai-coding","anthropic","claude-code","cli","command-line-tool","cost-reduction","developer-tools","llm","open-source","productivity","rust","token-optimization"],"created_at":"2026-02-04T21:06:14.603Z","updated_at":"2026-04-01T17:33:59.610Z","avatar_url":"https://github.com/rtk-ai.png","language":"Rust","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://avatars.githubusercontent.com/u/258253854?v=4\" alt=\"RTK - Rust Token Killer\" width=\"500\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eHigh-performance CLI proxy that reduces LLM token consumption by 60-90%\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/rtk-ai/rtk/actions\"\u003e\u003cimg src=\"https://github.com/rtk-ai/rtk/workflows/Security%20Check/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/rtk-ai/rtk/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/rtk-ai/rtk\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License: MIT\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/RySmvNF5kF\"\u003e\u003cimg src=\"https://img.shields.io/discord/1470188214710046894?label=Discord\u0026logo=discord\" alt=\"Discord\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://formulae.brew.sh/formula/rtk\"\u003e\u003cimg src=\"https://img.shields.io/homebrew/v/rtk\" alt=\"Homebrew\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.rtk-ai.app\"\u003eWebsite\u003c/a\u003e \u0026bull;\n  \u003ca href=\"#installation\"\u003eInstall\u003c/a\u003e \u0026bull;\n  \u003ca href=\"docs/TROUBLESHOOTING.md\"\u003eTroubleshooting\u003c/a\u003e \u0026bull;\n  \u003ca href=\"ARCHITECTURE.md\"\u003eArchitecture\u003c/a\u003e \u0026bull;\n  \u003ca href=\"https://discord.gg/RySmvNF5kF\"\u003eDiscord\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"README.md\"\u003eEnglish\u003c/a\u003e \u0026bull;\n  \u003ca href=\"README_fr.md\"\u003eFrancais\u003c/a\u003e \u0026bull;\n  \u003ca href=\"README_zh.md\"\u003e中文\u003c/a\u003e \u0026bull;\n  \u003ca href=\"README_ja.md\"\u003e日本語\u003c/a\u003e \u0026bull;\n  \u003ca href=\"README_ko.md\"\u003e한국어\u003c/a\u003e \u0026bull;\n  \u003ca href=\"README_es.md\"\u003eEspanol\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\nrtk filters and compresses command outputs before they reach your LLM context. Single Rust binary, 100+ supported commands, \u003c10ms overhead.\n\n## Token Savings (30-min Claude Code Session)\n\n| Operation | Frequency | Standard | rtk | Savings |\n|-----------|-----------|----------|-----|---------|\n| `ls` / `tree` | 10x | 2,000 | 400 | -80% |\n| `cat` / `read` | 20x | 40,000 | 12,000 | -70% |\n| `grep` / `rg` | 8x | 16,000 | 3,200 | -80% |\n| `git status` | 10x | 3,000 | 600 | -80% |\n| `git diff` | 5x | 10,000 | 2,500 | -75% |\n| `git log` | 5x | 2,500 | 500 | -80% |\n| `git add/commit/push` | 8x | 1,600 | 120 | -92% |\n| `cargo test` / `npm test` | 5x | 25,000 | 2,500 | -90% |\n| `ruff check` | 3x | 3,000 | 600 | -80% |\n| `pytest` | 4x | 8,000 | 800 | -90% |\n| `go test` | 3x | 6,000 | 600 | -90% |\n| `docker ps` | 3x | 900 | 180 | -80% |\n| **Total** | | **~118,000** | **~23,900** | **-80%** |\n\n\u003e Estimates based on medium-sized TypeScript/Rust projects. Actual savings vary by project size.\n\n## Installation\n\n### Homebrew (recommended)\n\n```bash\nbrew install rtk\n```\n\n### Quick Install (Linux/macOS)\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh | sh\n```\n\n\u003e Installs to `~/.local/bin`. Add to PATH if needed:\n\u003e ```bash\n\u003e echo 'export PATH=\"$HOME/.local/bin:$PATH\"' \u003e\u003e ~/.bashrc  # or ~/.zshrc\n\u003e ```\n\n### Cargo\n\n```bash\ncargo install --git https://github.com/rtk-ai/rtk\n```\n\n### Pre-built Binaries\n\nDownload from [releases](https://github.com/rtk-ai/rtk/releases):\n- macOS: `rtk-x86_64-apple-darwin.tar.gz` / `rtk-aarch64-apple-darwin.tar.gz`\n- Linux: `rtk-x86_64-unknown-linux-musl.tar.gz` / `rtk-aarch64-unknown-linux-gnu.tar.gz`\n- Windows: `rtk-x86_64-pc-windows-msvc.zip`\n\n### Verify Installation\n\n```bash\nrtk --version   # Should show \"rtk 0.28.2\"\nrtk gain        # Should show token savings stats\n```\n\n\u003e **Name collision warning**: Another project named \"rtk\" (Rust Type Kit) exists on crates.io. If `rtk gain` fails, you have the wrong package. Use `cargo install --git` above instead.\n\n## Quick Start\n\n```bash\n# 1. Install for your AI tool\nrtk init -g                     # Claude Code / Copilot (default)\nrtk init -g --gemini            # Gemini CLI\nrtk init -g --codex             # Codex (OpenAI)\nrtk init -g --agent cursor      # Cursor\nrtk init --agent windsurf       # Windsurf\nrtk init --agent cline          # Cline / Roo Code\n\n# 2. Restart your AI tool, then test\ngit status  # Automatically rewritten to rtk git status\n```\n\nThe hook transparently rewrites Bash commands (e.g., `git status` -\u003e `rtk git status`) before execution. Claude never sees the rewrite, it just gets compressed output.\n\n**Important:** the hook only runs on Bash tool calls. Claude Code built-in tools like `Read`, `Grep`, and `Glob` do not pass through the Bash hook, so they are not auto-rewritten. To get RTK's compact output for those workflows, use shell commands (`cat`/`head`/`tail`, `rg`/`grep`, `find`) or call `rtk read`, `rtk grep`, or `rtk find` directly.\n\n## How It Works\n\n```\n  Without rtk:                                    With rtk:\n\n  Claude  --git status--\u003e  shell  --\u003e  git         Claude  --git status--\u003e  RTK  --\u003e  git\n    ^                                   |            ^                      |          |\n    |        ~2,000 tokens (raw)        |            |   ~200 tokens        | filter   |\n    +-----------------------------------+            +------- (filtered) ---+----------+\n```\n\nFour strategies applied per command type:\n\n1. **Smart Filtering** - Removes noise (comments, whitespace, boilerplate)\n2. **Grouping** - Aggregates similar items (files by directory, errors by type)\n3. **Truncation** - Keeps relevant context, cuts redundancy\n4. **Deduplication** - Collapses repeated log lines with counts\n\n## Commands\n\n### Files\n```bash\nrtk ls .                        # Token-optimized directory tree\nrtk read file.rs                # Smart file reading\nrtk read file.rs -l aggressive  # Signatures only (strips bodies)\nrtk smart file.rs               # 2-line heuristic code summary\nrtk find \"*.rs\" .               # Compact find results\nrtk grep \"pattern\" .            # Grouped search results\nrtk diff file1 file2            # Condensed diff\n```\n\n### Git\n```bash\nrtk git status                  # Compact status\nrtk git log -n 10               # One-line commits\nrtk git diff                    # Condensed diff\nrtk git add                     # -\u003e \"ok\"\nrtk git commit -m \"msg\"         # -\u003e \"ok abc1234\"\nrtk git push                    # -\u003e \"ok main\"\nrtk git pull                    # -\u003e \"ok 3 files +10 -2\"\n```\n\n### GitHub CLI\n```bash\nrtk gh pr list                  # Compact PR listing\nrtk gh pr view 42               # PR details + checks\nrtk gh issue list               # Compact issue listing\nrtk gh run list                 # Workflow run status\n```\n\n### Test Runners\n```bash\nrtk test cargo test             # Show failures only (-90%)\nrtk err npm run build           # Errors/warnings only\nrtk vitest run                  # Vitest compact (failures only)\nrtk playwright test             # E2E results (failures only)\nrtk pytest                      # Python tests (-90%)\nrtk go test                     # Go tests (NDJSON, -90%)\nrtk cargo test                  # Cargo tests (-90%)\nrtk rake test                   # Ruby minitest (-90%)\nrtk rspec                       # RSpec tests (JSON, -60%+)\n```\n\n### Build \u0026 Lint\n```bash\nrtk lint                        # ESLint grouped by rule/file\nrtk lint biome                  # Supports other linters\nrtk tsc                         # TypeScript errors grouped by file\nrtk next build                  # Next.js build compact\nrtk prettier --check .          # Files needing formatting\nrtk cargo build                 # Cargo build (-80%)\nrtk cargo clippy                # Cargo clippy (-80%)\nrtk ruff check                  # Python linting (JSON, -80%)\nrtk golangci-lint run           # Go linting (JSON, -85%)\nrtk rubocop                     # Ruby linting (JSON, -60%+)\n```\n\n### Package Managers\n```bash\nrtk pnpm list                   # Compact dependency tree\nrtk pip list                    # Python packages (auto-detect uv)\nrtk pip outdated                # Outdated packages\nrtk bundle install              # Ruby gems (strip Using lines)\nrtk prisma generate             # Schema generation (no ASCII art)\n```\n\n### Containers\n```bash\nrtk docker ps                   # Compact container list\nrtk docker images               # Compact image list\nrtk docker logs \u003ccontainer\u003e     # Deduplicated logs\nrtk docker compose ps           # Compose services\nrtk kubectl pods                # Compact pod list\nrtk kubectl logs \u003cpod\u003e          # Deduplicated logs\nrtk kubectl services            # Compact service list\n```\n\n### Data \u0026 Analytics\n```bash\nrtk json config.json            # Structure without values\nrtk deps                        # Dependencies summary\nrtk env -f AWS                  # Filtered env vars\nrtk log app.log                 # Deduplicated logs\nrtk curl \u003curl\u003e                  # Auto-detect JSON + schema\nrtk wget \u003curl\u003e                  # Download, strip progress bars\nrtk summary \u003clong command\u003e      # Heuristic summary\nrtk proxy \u003ccommand\u003e             # Raw passthrough + tracking\n```\n\n### Token Savings Analytics\n```bash\nrtk gain                        # Summary stats\nrtk gain --graph                # ASCII graph (last 30 days)\nrtk gain --history              # Recent command history\nrtk gain --daily                # Day-by-day breakdown\nrtk gain --all --format json    # JSON export for dashboards\n\nrtk discover                    # Find missed savings opportunities\nrtk discover --all --since 7    # All projects, last 7 days\n\nrtk session                     # Show RTK adoption across recent sessions\n```\n\n## Global Flags\n\n```bash\n-u, --ultra-compact    # ASCII icons, inline format (extra token savings)\n-v, --verbose          # Increase verbosity (-v, -vv, -vvv)\n```\n\n## Examples\n\n**Directory listing:**\n```\n# ls -la (45 lines, ~800 tokens)        # rtk ls (12 lines, ~150 tokens)\ndrwxr-xr-x  15 user staff 480 ...       my-project/\n-rw-r--r--   1 user staff 1234 ...       +-- src/ (8 files)\n...                                      |   +-- main.rs\n                                         +-- Cargo.toml\n```\n\n**Git operations:**\n```\n# git push (15 lines, ~200 tokens)       # rtk git push (1 line, ~10 tokens)\nEnumerating objects: 5, done.             ok main\nCounting objects: 100% (5/5), done.\nDelta compression using up to 8 threads\n...\n```\n\n**Test output:**\n```\n# cargo test (200+ lines on failure)     # rtk test cargo test (~20 lines)\nrunning 15 tests                          FAILED: 2/15 tests\ntest utils::test_parse ... ok               test_edge_case: assertion failed\ntest utils::test_format ... ok              test_overflow: panic at utils.rs:18\n...\n```\n\n## Auto-Rewrite Hook\n\nThe most effective way to use rtk. The hook transparently intercepts Bash commands and rewrites them to rtk equivalents before execution.\n\n**Result**: 100% rtk adoption across all conversations and subagents, zero token overhead.\n\n**Scope note:** this only applies to Bash tool calls. Claude Code built-in tools such as `Read`, `Grep`, and `Glob` bypass the hook, so use shell commands or explicit `rtk` commands when you want RTK filtering there.\n\n### Setup\n\n```bash\nrtk init -g                 # Install hook + RTK.md (recommended)\nrtk init -g --opencode      # OpenCode plugin (instead of Claude Code)\nrtk init -g --auto-patch    # Non-interactive (CI/CD)\nrtk init -g --hook-only     # Hook only, no RTK.md\nrtk init --show             # Verify installation\n```\n\nAfter install, **restart Claude Code**.\n\n## Supported AI Tools\n\nRTK supports 10 AI coding tools. Each integration transparently rewrites shell commands to `rtk` equivalents for 60-90% token savings.\n\n| Tool | Install | Method |\n|------|---------|--------|\n| **Claude Code** | `rtk init -g` | PreToolUse hook (bash) |\n| **GitHub Copilot (VS Code)** | `rtk init -g --copilot` | PreToolUse hook (`rtk hook copilot`) — transparent rewrite |\n| **GitHub Copilot CLI** | `rtk init -g --copilot` | PreToolUse deny-with-suggestion (CLI limitation) |\n| **Cursor** | `rtk init -g --agent cursor` | preToolUse hook (hooks.json) |\n| **Gemini CLI** | `rtk init -g --gemini` | BeforeTool hook (`rtk hook gemini`) |\n| **Codex** | `rtk init -g --codex` | AGENTS.md + RTK.md instructions |\n| **Windsurf** | `rtk init --agent windsurf` | .windsurfrules (project-scoped) |\n| **Cline / Roo Code** | `rtk init --agent cline` | .clinerules (project-scoped) |\n| **OpenCode** | `rtk init -g --opencode` | Plugin TS (tool.execute.before) |\n| **OpenClaw** | `openclaw plugins install ./openclaw` | Plugin TS (before_tool_call) |\n| **Mistral Vibe** | Planned (#800) | Blocked on upstream BeforeToolCallback |\n\n### Claude Code (default)\n\n```bash\nrtk init -g                 # Install hook + RTK.md\nrtk init -g --auto-patch    # Non-interactive (CI/CD)\nrtk init --show             # Verify installation\nrtk init -g --uninstall     # Remove\n```\n\n### GitHub Copilot (VS Code + CLI)\n\n```bash\nrtk init -g --copilot         # Install hook + instructions\n```\n\nCreates `.github/hooks/rtk-rewrite.json` (PreToolUse hook) and `.github/copilot-instructions.md` (prompt-level awareness).\n\nThe hook (`rtk hook copilot`) auto-detects the format:\n- **VS Code Copilot Chat**: transparent rewrite via `updatedInput` (same as Claude Code)\n- **Copilot CLI**: deny-with-suggestion (CLI does not support `updatedInput` yet — see [copilot-cli#2013](https://github.com/github/copilot-cli/issues/2013))\n\n### Cursor\n\n```bash\nrtk init -g --agent cursor\n```\n\nCreates `~/.cursor/hooks/rtk-rewrite.sh` + patches `~/.cursor/hooks.json` with preToolUse matcher. Works with both Cursor editor and `cursor-agent` CLI.\n\n### Gemini CLI\n\n```bash\nrtk init -g --gemini\nrtk init -g --gemini --uninstall\n```\n\nCreates `~/.gemini/hooks/rtk-hook-gemini.sh` + patches `~/.gemini/settings.json` with BeforeTool hook.\n\n### Codex (OpenAI)\n\n```bash\nrtk init -g --codex\n```\n\nCreates `~/.codex/RTK.md` + `~/.codex/AGENTS.md` with `@RTK.md` reference. Codex reads these as global instructions.\n\n### Windsurf\n\n```bash\nrtk init --agent windsurf\n```\n\nCreates `.windsurfrules` in the current project. Cascade reads rules and prefixes commands with `rtk`.\n\n### Cline / Roo Code\n\n```bash\nrtk init --agent cline\n```\n\nCreates `.clinerules` in the current project. Cline reads rules and prefixes commands with `rtk`.\n\n### OpenCode\n\n```bash\nrtk init -g --opencode\n```\n\nCreates `~/.config/opencode/plugins/rtk.ts`. Uses `tool.execute.before` hook.\n\n### OpenClaw\n\n```bash\nopenclaw plugins install ./openclaw\n```\n\nPlugin in `openclaw/` directory. Uses `before_tool_call` hook, delegates to `rtk rewrite`.\n\n### Mistral Vibe (planned)\n\nBlocked on upstream BeforeToolCallback support ([mistral-vibe#531](https://github.com/mistralai/mistral-vibe/issues/531), [PR #533](https://github.com/mistralai/mistral-vibe/pull/533)). Tracked in [#800](https://github.com/rtk-ai/rtk/issues/800).\n\n### Commands Rewritten\n\n| Raw Command | Rewritten To |\n|-------------|-------------|\n| `git status/diff/log/add/commit/push/pull` | `rtk git ...` |\n| `gh pr/issue/run` | `rtk gh ...` |\n| `cargo test/build/clippy` | `rtk cargo ...` |\n| `cat/head/tail \u003cfile\u003e` | `rtk read \u003cfile\u003e` |\n| `rg/grep \u003cpattern\u003e` | `rtk grep \u003cpattern\u003e` |\n| `ls` | `rtk ls` |\n| `vitest/jest` | `rtk vitest run` |\n| `tsc` | `rtk tsc` |\n| `eslint/biome` | `rtk lint` |\n| `prettier` | `rtk prettier` |\n| `playwright` | `rtk playwright` |\n| `prisma` | `rtk prisma` |\n| `ruff check/format` | `rtk ruff ...` |\n| `pytest` | `rtk pytest` |\n| `pip list/install` | `rtk pip ...` |\n| `go test/build/vet` | `rtk go ...` |\n| `golangci-lint` | `rtk golangci-lint` |\n| `rake test` / `rails test` | `rtk rake test` |\n| `rspec` / `bundle exec rspec` | `rtk rspec` |\n| `rubocop` / `bundle exec rubocop` | `rtk rubocop` |\n| `bundle install/update` | `rtk bundle ...` |\n| `docker ps/images/logs` | `rtk docker ...` |\n| `kubectl get/logs` | `rtk kubectl ...` |\n| `curl` | `rtk curl` |\n| `pnpm list/outdated` | `rtk pnpm ...` |\n\nCommands already using `rtk`, heredocs (`\u003c\u003c`), and unrecognized commands pass through unchanged.\n\n## Configuration\n\n### Config File\n\n`~/.config/rtk/config.toml` (macOS: `~/Library/Application Support/rtk/config.toml`):\n\n```toml\n[tracking]\ndatabase_path = \"/path/to/custom.db\"  # default: ~/.local/share/rtk/history.db\n\n[hooks]\nexclude_commands = [\"curl\", \"playwright\"]  # skip rewrite for these\n\n[tee]\nenabled = true          # save raw output on failure (default: true)\nmode = \"failures\"       # \"failures\", \"always\", or \"never\"\nmax_files = 20          # rotation limit\n```\n\n### Tee: Full Output Recovery\n\nWhen a command fails, RTK saves the full unfiltered output so the LLM can read it without re-executing:\n\n```\nFAILED: 2/15 tests\n[full output: ~/.local/share/rtk/tee/1707753600_cargo_test.log]\n```\n\n### Uninstall\n\n```bash\nrtk init -g --uninstall     # Remove hook, RTK.md, settings.json entry\ncargo uninstall rtk          # Remove binary\nbrew uninstall rtk           # If installed via Homebrew\n```\n\n## Documentation\n\n- **[TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md)** - Fix common issues\n- **[INSTALL.md](INSTALL.md)** - Detailed installation guide\n- **[ARCHITECTURE.md](ARCHITECTURE.md)** - Technical architecture\n- **[SECURITY.md](SECURITY.md)** - Security policy and PR review process\n- **[AUDIT_GUIDE.md](docs/AUDIT_GUIDE.md)** - Token savings analytics guide\n\n## Privacy \u0026 Telemetry\n\nRTK collects **anonymous, aggregate usage metrics** once per day, **enabled by default**. This helps prioritize development. See opt-out options below.\n\n**What is collected:**\n- Device hash (salted SHA-256 — per-user random salt stored locally, not reversible)\n- RTK version, OS, architecture\n- Command count (last 24h) and top command names (e.g. \"git\", \"cargo\" — no arguments, no file paths)\n- Token savings percentage\n\n**What is NOT collected:** source code, file paths, command arguments, secrets, environment variables, or any personally identifiable information.\n\n**Opt-out** (any of these):\n```bash\n# Environment variable\nexport RTK_TELEMETRY_DISABLED=1\n\n# Or in config file (~/.config/rtk/config.toml)\n[telemetry]\nenabled = false\n```\n\n## Contributing\n\nContributions welcome! Please open an issue or PR on [GitHub](https://github.com/rtk-ai/rtk).\n\nJoin the community on [Discord](https://discord.gg/RySmvNF5kF).\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n","funding_links":[],"categories":["⌨️ Shell \u0026 CLI Assistants","Rust","Proxy \u0026 Customization","\u003ca name=\"Rust\"\u003e\u003c/a\u003eRust","AI Terminals","Frameworks \u0026 Libraries"],"sub_categories":["By Deployment Model","MCP Servers","Copilot Extensions \u0026 Alternatives"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frtk-ai%2Frtk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frtk-ai%2Frtk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frtk-ai%2Frtk/lists"}