OpenClaw · Skill

LLM

When you run commands through an AI assistant, the full output goes into the LLM context:

DevOps & Cloud
v2.4.0
VirusTotal: Suspicious

Install

Start with the primary install command. Alternate entrypoints are included below for ClawHub and OpenClaw CLI users.

Primary command

clawhub install satnamra/oktk

ClawHub installer

npx clawhub@latest install satnamra/oktk

OpenClaw CLI

openclaw skills install satnamra/oktk

Direct OpenClaw install

openclaw install satnamra/oktk

What this skill does

When you run commands through an AI assistant, the full output goes into the LLM context:

Why it matters

Manually truncating CLI output before sending it to an LLM requires extra effort; oktk applies command-specific compression rules automatically, with a fallback to raw output if a filter fails.

Typical use cases

  • Cutting API costs when repeatedly checking git status during a coding session
  • Reviewing Docker container logs with an AI without flooding its context window
  • Getting kubectl pod status summaries during cluster troubleshooting
  • Running npm tests through an AI assistant without sending the full output
  • Filtering curl responses to status codes and key headers during API debugging

Source instructions

oktk - CLI Output Compressor for LLMs

The Problem

When you run commands through an AI assistant, the full output goes into the LLM context:

$ git status
# Returns 60+ lines, ~800 tokens
# Your AI reads ALL of it, you pay for ALL of it

Every token costs money. Verbose outputs waste your context window.

The Solution

oktk sits between your commands and the LLM, compressing outputs intelligently:

┌──────────┐     ┌──────────┐     ┌──────────┐
│ Command  │ ──► │   oktk   │ ──► │   LLM    │
│ (800 tk) │     │ compress │     │ (80 tk)  │
└──────────┘     └──────────┘     └──────────┘
                      │
                 90% SAVED

When Does It Work?

Automatically when you run supported commands through OpenClaw:

CommandWhat oktk doesSavings
git statusShows only: branch, ahead/behind, file counts90%
git logOne line per commit: hash + message + author85%
git diffSummary: X files, +Y/-Z lines, file list80%
npm testJust: ✅ passed or ❌ failed + count98%
ls -laGroups by type, shows sizes, skips details83%
curlStatus code + key headers + truncated body97%
grepMatch count + first N matches80%
docker psContainer list: name, image, status85%
docker logsLast N lines + error count90%
kubectl get podsPod status summary with counts85%
kubectl logsLast N lines + error/warning counts90%
Any commandAI learns patterns automatically (optional)~70%

Concrete Example

Before oktk (800 tokens sent to LLM):

On branch main
Your branch is ahead of 'origin/main' by 3 commits.
  (use "git push" to publish your local commits)

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   src/components/Button.jsx
        modified:   src/components/Header.jsx
        modified:   src/utils/format.js
        modified:   src/utils/validate.js
        modified:   package.json
        modified:   package-lock.json

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        src/components/Footer.jsx
        src/components/Sidebar.jsx
        tests/Button.test.js

no changes added to commit (use "git add" and/or "git commit -a")

After oktk (80 tokens sent to LLM):

📍 main
↑ Ahead 3 commits
✏️  Modified: 6
❓ Untracked: 3

Same information. 90% fewer tokens. Same cost savings.

How It Works Technically

  1. Intercepts command output after execution
  2. Detects command type (git? npm? ls?)
  3. Applies specialized filter for that command
  4. Extracts only essential information
  5. Caches results (same command = instant, no reprocessing)

Safety First

oktk never breaks your workflow:

Try specialized filter
    ↓ fails?
Try basic filter  
    ↓ fails?
Return raw output (same as without oktk)

Worst case: You get normal output Best case: 90% token savings

Usage

Global Command (Recommended)

After installation, oktk is available globally:

# Pipe any command through oktk
git status | oktk git status
docker ps | oktk docker ps
kubectl get pods | oktk kubectl get pods

# See your total savings
oktk --stats

# Bypass filter (get raw)
oktk --raw git status

Shell Aliases (Auto-Filter)

Source the aliases file for automatic filtering:

# Add to ~/.zshrc or ~/.bashrc
source ~/.openclaw/workspace/skills/oktk/scripts/oktk-aliases.sh

Then use short aliases:

gst        # git status (filtered)
glog       # git log (filtered)
dps        # docker ps (filtered)
kpods      # kubectl get pods (filtered)

# Universal wrapper - filter ANY command
ok git status
ok docker ps -a
ok kubectl describe pod my-pod

OpenClaw Integration

When using OpenClaw's exec tool, pipe outputs through oktk:

# In your prompts, ask OpenClaw to:
git status | oktk git status
docker logs container | oktk docker logs

# Or use the 'ok' wrapper (if aliases sourced):
ok git diff HEAD~5

Note: OpenClaw doesn't have a built-in exec output transformer yet. The recommended approach is:

  1. Source the aliases file in your shell
  2. Use ok <command> wrapper for any command
  3. Or manually pipe: <command> | oktk <command>

Real Savings Example

After 1 week of normal usage:

📊 Token Savings
━━━━━━━━━━━━━━━━
Commands filtered: 1,247
Tokens saved:      456,789 (78%)

💰 At $0.01/1K tokens = $4.57 saved

Installation

Already included in OpenClaw workspace, or:

clawhub install oktk

Made with ❤️ in Lithuania 🇱🇹

Related OpenClaw skills

Browse all →
Featured slot

Your product here

Reserve this slot to reach operators and coding-agent buyers.

Shown where builders are actively comparing tools and deployment options.

Advertise