Open Source · Rust · LGPL-3.0

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.

$/otk-setup

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

Step 1 of 6

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.

Claude runs:

git status

Hook rewrites:

otk git status

Claude sees:

"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

OperationFreqWithout OTKWith OTKSavings
invoke test5x50,0005,00090%
docker compose logs10x30,0003,00090%
Reading .py files20x40,00012,00070%
Reading .xml views15x30,0009,00070%
git status / diff / log10x15,0003,00080%
grep / rg searches8x16,0003,20080%
Session total~181,000~35,20081%

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.

<10ms
Startup time

Invisible overhead on every command

4.2 MB
Binary size

Single file, no runtime dependencies

<5 MB
Memory usage

No interpreter, no garbage collector

Zero
Dependencies

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

$/otk-setup

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