OTK — Odoo Token Killer
Cut your Claude Code token usage by 80% on Odoo projects.
A high-performance CLI proxy that compresses command outputs before they reach Claude's context window. Keep only what matters, discard the rest.
Letzdoo AI Launching Soon
Letzdoo AI will come with a large set of AI tools for Odoo implementation, development, code analysis, and project orchestration — including OTK. Join the waitlist to get early access.
Join the Waitlist
What's your email?
Press Enter to continue
The Problem
Every time Claude Code runs a command during Odoo development — reading a model file, running tests, checking Docker logs — the full raw output floods the context window. A single invoke test can dump 10,000+ lines of Odoo module loading, SQL queries, XML-RPC traces, and werkzeug access logs.
Only the 5 lines showing the test failure actually matter. You're paying for noise. And noise makes Claude slower and less accurate.
Without OTK
$ invoke test sale_module
Loading module base...
Loading module sale...
... 2,994 more lines of Odoo logs ...
werkzeug: 127.0.0.1 GET /web 200
FAIL: test_sale_discount
3,000 lines → Claude's context
With OTK
$ invoke test sale_module
Tests: 142 passed, 1 failed
FAILED test_sale_discount:
AssertionError: expected 10.0, got 9.5
[full: ~/.local/share/otk/tee/...log]
5 lines → Claude's context
How It Works
OTK uses a Claude Code PreToolUse hook to transparently rewrite commands. No configuration needed — Claude doesn't even know OTK is there.
git status
otk git status
"3 modified, 1 added"
Full output on demand
When details are needed, OTK's tee system saves the complete output to disk and prints a path hint. Claude can read the full file anytime.
Tests: 142 passed, 1 failed
FAILED test_sale_discount: AssertionError: expected 10.0, got 9.5
[full output: ~/.local/share/otk/tee/1740123456_invoke_test.log]
Token Savings — Real Numbers
Measured on a typical 30-minute Odoo development session
| Operation | Freq | Without OTK | With OTK | Savings |
|---|---|---|---|---|
| invoke test | 5x | 50,000 | 5,000 | 90% |
| docker compose logs | 10x | 30,000 | 3,000 | 90% |
| Reading .py files | 20x | 40,000 | 12,000 | 70% |
| Reading .xml views | 15x | 30,000 | 9,000 | 70% |
| git status / diff / log | 10x | 15,000 | 3,000 | 80% |
| grep / rg searches | 8x | 16,000 | 3,200 | 80% |
| Session total | ~181,000 | ~35,200 | 81% |
Built-in Analytics Dashboard
$ otk gain
OTK Token Savings (Odoo Development)
==================================================
Total commands: 89
Input tokens: 181.0K
Output tokens: 35.2K
Tokens saved: 145.8K (81.0%)
Command Count Saved Avg%
──────────────────────────────────────────────────
otk test 12 45.0K 90.0%
otk logs 18 27.0K 90.0%
otk read *.py 25 28.0K 70.0%
otk git status 15 12.0K 80.0%
12 Specialized Filters
Each filter is tuned for a specific Odoo development output
Test
90-95%invoke test / pytest — failures + summary only
Log
85-95%Docker & Odoo logs — errors + warnings with context
Python
40-70%.py source — signatures, fields, docstrings (skips bodies)
XML
60-80%.xml views — tag structure, attributes, truncated content
Git Status
80%File counts by category
Git Diff
70-80%Stats + key hunk headers
Git Log
80%One line per commit
Grep
70-85%Results grouped by file, deduplicated
LS/Tree
50-70%Compact listing with extension counts
Docker
60-80%Truncated IDs, compact tables
Pip
80-90%Package count summaries
SQL
60-80%Truncated columns, row limits
Built for Performance
Written in Rust — the same language as RTK, the project that inspired it.
Invisible overhead on every command
Single file, no runtime dependencies
No interpreter, no garbage collector
cargo install and done
No Python venv. No Node modules. No Docker. Just a binary.
Works With Your Existing Setup
OTK integrates seamlessly with the Letzdoo Claude Code plugin ecosystem
odoo-doodba-dev
OTK filters invoke test output from Doodba containers
odoo-development
OTK reduces context size before code generation agents run
odoo-query
XML-RPC results pass through unchanged (already compact JSON)
Quick Start
That's it. OTK builds, installs, and registers the hook. Commands are optimized from the next prompt onward.
Standing on the Shoulders of RTK
OTK would not exist without RTK (Rust Token Killer) by the rtk-ai team. RTK pioneered the token-optimized CLI proxy pattern for Claude Code and proved that 60–90% savings are achievable through intelligent output filtering. We are grateful for their work and recommend RTK to anyone working outside the Odoo ecosystem.
OTK applies the same architecture — transparent hooks, lazy-compiled regex filters, SQLite tracking, tee recovery, and the gain analytics dashboard — to the specific needs of Odoo developers.
Frequently Asked Questions
Does OTK modify my actual command outputs?
No. OTK only compresses what Claude sees. The actual command still runs normally, and full output is saved to disk via the tee system. Claude can read the full output file anytime it needs more detail. Your terminal, CI/CD, and other tools are completely unaffected.
Will Claude still be able to debug issues with compressed output?
Yes. OTK is designed to preserve the information Claude needs: error messages, tracebacks, test failure details, and key status summaries. When Claude needs the full context, it reads the tee file. In practice, Claude makes fewer mistakes with OTK because it's not distracted by thousands of irrelevant log lines.
How does OTK compare to RTK?
OTK is built on the same architecture as RTK (Rust Token Killer) but is specifically tuned for Odoo development. It has specialized filters for Odoo-specific outputs like invoke test, Odoo server logs, XML views, and __manifest__.py files that RTK's general-purpose filters don't optimize for. If you work on non-Odoo projects, use RTK; for Odoo, use OTK.
Does OTK work with all Claude Code tools or just Bash?
OTK hooks into the PreToolUse event for Bash commands specifically, which is where the vast majority of token waste occurs. Claude Code's built-in tools like Read, Grep, and Glob already have their own output limits. OTK focuses on the commands that produce unbounded output: tests, logs, docker, and git operations.
Is OTK open source?
Yes. OTK is licensed under LGPL-3.0 and is part of the Letzdoo Claude Code Marketplace. You can inspect every filter, contribute improvements, and customize it for your specific Odoo setup. The codebase is written in Rust for maximum performance and reliability.
Stop Paying for Noise
Install OTK in one command and start saving 80% of your Claude Code tokens on Odoo projects immediately.
Get Started Free