Feeding raw terminal command output directly into large language models (LLMs) or automated AI coding agents often inflates prompt token counts with unnecessary visual padding, repetitive progress indicators, ANSI escape sequences, and verbose tabular borders. The open-source utility rtk (Rust ToolKit for token optimisation) solves this inefficiency by parsing standard Linux terminal streams, stripping non-essential formatting, and compressing tabular data into token-dense markdown or JSON before reaching your LLM context window.
Why Compress Terminal Output for AI Prompts?
Modern developer workflows frequently pipeline terminal diagnostics—such as directory listings, process tables, compiler errors, and git diffs—directly into AI tools like Claude Code, Cursor, Aider, or custom API wrappers. Raw Unix commands generate output designed for human eyes on 80-column screens rather than semantic language processing:
- Whitespace and table borders: Traditional ASCII borders, repeated dashes, and column padding consume tokens without delivering actionable information.
- ANSI escape codes: Terminal colour sequences and cursor movement controls introduce noisy characters that confuse language model parsers.
- Progress logs and repetitive status lines: Package managers and build tools output hundreds of intermediate lines that crowd the model’s working memory.
By preprocessing command execution through rtk, developers achieve between 40% and 75% token reduction across typical command line transcripts while preserving full semantic clarity.
Installing rtk on Linux Distributions
Because rtk is compiled in Rust, you can install it across various distributions using Cargo, pre-built binary releases, or modern package managers.
Method 1: Installing via Cargo
If you have Rust and Cargo installed on Ubuntu, Debian, Fedora, or Arch Linux, compile and install the utility directly from crates.io:
cargo install rtk-cli
Ensure that your local Cargo binary path is present in your shell configuration (~/.bashrc or ~/.zshrc):
export PATH="$HOME/.cargo/bin:$PATH"
Method 2: Downloading Pre-compiled GitHub Releases
For headless production servers or automated CI/CD runners without a Rust toolchain, fetch the latest static binary release via curl:
curl -sSL https://github.com/rtk-org/rtk/releases/latest/download/rtk-linux-x86_64.tar.gz | tar -xz
sudo mv rtk /usr/local/bin/
sudo chmod +x /usr/local/bin/rtk
Method 3: Arch Linux (AUR)
On Arch-based systems, install the package using an AUR helper such as paru or yay:
yay -S rtk-bin
Core CLI Syntax and Output Formatting
The standard syntax for rtk allows you to wrap existing commands directly or pipe standard output streams into the compressor.
Running Wrapped Commands
Prepend rtk run to any standard terminal command to capture both stdout and stderr, sanitising the stream before returning the output:
rtk run -- git status
This command strips colour escapes, removes comment explanations intended for novice human users, and presents modified files in a compact tabular format.
Piping Existing Command Output
Alternatively, pipe piped output directly into rtk pipe:
ps aux | rtk pipe --format markdown
| Flag / Parameter | Description | Target Use Case |
|---|---|---|
--format markdown |
Converts fixed-width tables into minimal markdown tables. | Tabular command output (ps, df, docker ps). |
--format json |
Parses raw streams into structured, compact JSON arrays. | API payload injection and script parsing. |
--strip-ansi |
Removes colour codes, cursor escapes, and carriage returns. | Default active filter on all streams. |
--truncate-lines <n> |
Caps output to the most relevant head and tail lines. | Lengthy build traces and test run outputs. |
Compressing Common Developer Workflows
1. Docker and Container Listings
Inspecting active Docker containers using docker ps generates wide horizontal lines with substantial spacing. Run the command through rtk to produce token-efficient representations:
rtk run --format markdown -- docker ps
The resulting output drops blank columns, retains only vital fields (CONTAINER ID, IMAGE, STATUS, PORTS), and condenses multi-line network port mappings.
2. Git Diffs and Log Summaries
Large git diffs often overwhelm context limits with unchanged context lines. Use rtk to isolate changed lines without losing syntax context:
rtk run --git-diff -- git diff HEAD~1
3. System Resource Audits
When asking an LLM to diagnose server memory or disk exhaustion, compress df -h and free -m statistics:
df -h | rtk pipe --format markdown | pbcopy # Or xclip on Linux
Configuring Shell Aliases and LLM Integration
To automate token reduction across your daily terminal workflow, define custom helper functions within your ~/.bashrc file:
# Streamlined AI prompt copier
promptclip() {
"$@" | rtk pipe --format markdown --strip-ansi | xclip -selection clipboard
echo "[rtk] Optimised command output copied to system clipboard."
}
Reload your shell configuration to apply the function:
source ~/.bashrc
Now, any command output can be compressed and copied immediately with minimal token footprint:
promptclip kubectl get pods -A
Troubleshooting rtk Execution Issues
- Binary not found after installation: Confirm that
$HOME/.cargo/binis declared inside your shell login scripts. Executewhich rtkto verify path resolution. - Broken multi-byte characters: If parsing international character sets or non-standard UTF-8 strings, run with the
--preserve-utf8flag to prevent aggressive character sanitisation. - Over-aggressive table truncation: If specific column headers disappear in markdown conversions, pass
--min-column-width 4to adjust the column boundary heuristic.