Too lazy to waste tokens. So lazy, it even skips itself when that's cheaper.
Every message you send to Claude, ChatGPT, or Gemini costs tokens β that's your quota, your rate limit, or your money. Most prompts carry filler the model never needed ("Hi! Could you please maybeβ¦"). And most AI replies are longer than you wanted.
iamtoolazy trims that waste automatically, without changing what you mean β and shows you honest numbers about what it did (and what it deliberately skipped).
- βοΈ Prompt compression β "Hi! Could you please fix this bug? Thanks so much!!" β "Fix this bug." Same request, fraction of the tokens.
- π‘ Meaning-safe by design β code, URLs, file paths, numbers, and negations ("don't", "never") are never touched. Tested, not promised.
- π§ Smart, not blind β it classifies each prompt and acts only when saving beats the cost. Short prompts cost exactly zero. It even learns your real usage on-device and calibrates itself (the LAZY method).
- π§Ύ The honest ledger β every number is labeled an estimate, every overhead is shown, every skip is explained. No inflated marketing math.
- π 100% local β zero telemetry, no accounts, no data leaves your machine. Ever.
- π English + Bahasa Indonesia, more languages coming (Fase 5).
| You are⦠| Install | Time |
|---|---|---|
| A Claude Code user | The plugin β¬οΈ | ~30 sec |
| A claude.ai / ChatGPT / Gemini user | The browser extension (beta) β¬οΈ | ~2 min |
| A JS developer | npm i @iamtoolazy/core β¬οΈ |
~30 sec |
Inside any Claude Code session:
/plugin marketplace add MRLNT/iamtoolazy
/plugin install lazy@iamtoolazy
Run /reload-plugins when prompted β done. It introduces itself once,
then works silently: every prompt is classified on your machine and a
tiny saving directive is attached only when it's worth it. Try
/lazy:help for the menu, /lazy:stats for your ledger, /lazy:off to
pause. Details: packages/cli.
Works on claude.ai, chatgpt.com, and gemini.google.com. Web Store listing is in review; until then, two ways in:
Easy way (no build tools): grab
iamtoolazy-extension-v0.6.1.zip from the latest release,
unzip it, then: chrome://extensions β enable Developer mode
(top-right) β Load unpacked β select the unzipped folder. A welcome
tab opens with a 30-second hands-on tour.
Dev way (from source):
git clone https://github.com/MRLNT/iamtoolazy && cd iamtoolazy
npm install && npm run build:extthen Load unpacked β the packages/extension folder.
How to use it: press Alt+L (β₯L on Mac) in the chat box β a preview diff shows exactly what gets trimmed β Apply. Attach a big image and a pill offers to downscale it before upload; PDFβtext lives in Options (off by default); the popup's π§΅ Distill shrinks long threads. Privacy: PRIVACY.md Β· THREAT-MODEL.md β zero network, zero telemetry. Details: packages/extension.
| Surface | Status |
|---|---|
| claude.ai | β supported |
| chatgpt.com | β supported |
| gemini.google.com | β supported |
| Claude Code (plugin) | β supported |
Any tool importing @iamtoolazy/core |
β supported |
| Firefox (same extension, MV3 port) | π planned |
| More chat surfaces (e.g. Copilot, Mistral, DeepSeek, Perplexity, Grok, Poe, OpenWebUI) | π wanted β see below |
On adding surfaces. The compression engine is provider-agnostic already; a new surface needs only a selector adapter (find the composer, read it, write it back) plus that provider's token-cost quirks, if any. That is deliberately a small, well-scoped contribution β the honest catch is that each one needs field testing on a real account before it ships, and shipping an adapter that silently mangles prompts would be worse than not shipping it. So the list above is a wanted-list, not a promise with dates. If a surface matters to you, open an issue saying which one and whether you can help test it; that is the signal that moves it up.
npm i @iamtoolazy/coreimport { processPrompt, initTokenizer } from '@iamtoolazy/core';
await initTokenizer(); // optional: real token counts instead of chars/4
const r = processPrompt('Hi! Could you please implement login? Thanks!');
r.output; // compressed + structured + directive attached
r.tokens.predictedNet; // the honest ledger
r.injection.reason; // why it acted β or why it refused to- Classify β coding / reasoning / prose / q&a, detected locally.
- Act only when net-positive β compression and tiny directives (research-backed: Chain-of-Draft, TALE budgets) are attached only when predicted savings beat their own cost. Otherwise: zero touch.
- Learn β response lengths are measured on your device and future decisions calibrate to your usage. That loop is our original contribution, the LAZY method (Learn Β· Adapt Β· Zero-waste Β· Yield): docs/paper/lazy-method.md.
- Show the receipt β the ledger prints savings and overhead, labeled as estimates until the Fase 4 benchmarks replace them with measured numbers.
Playground β β paste a prompt, watch the pipeline print its honest receipt. Runs entirely in your browser; nothing leaves the page.
Does my data go anywhere? No. Everything runs locally; there is no server, no telemetry, no account. There is no BYOK or network feature in the extension β every feature is free and offline by construction (an early BYOK experiment was built, field-tested, and removed on purpose).
Will it change my meaning? It refuses to touch code, URLs, paths, numbers, and negations β enforced by tests, and structurally impossible to remove in the compressor. When in doubt, it keeps your wording.
How much does it save? Measured, input side (run 1, offline,
committed in benchmarks/results/run-001-offline/): the thread
distiller cuts re-sent history by ~30% on 6β8-turn threads, breaking
even after ~3β4 turns (modeled ceiling β longer real threads save
more). On short single prompts the injected directives cost about +50
input tokens on average β a deliberate bet that they save more on the
output side, which is not yet measured (run 1 spent zero on APIs;
the honest ledger nets this per prompt and skips when it can't win).
Raw JSONL, spreads, and limitations ship with every number.
Why "lazy"? Because the cheapest token is the one never sent β and the smartest tool is the one that knows when doing nothing is optimal.
Is it free? MIT. Forever.
caveman proved terse output works; ponytail proved minimal code works. Both are static policies. iamtoolazy covers the pools they don't β your prompts (re-sent every turn), media, thread history β adds a net-negative guard with logged skip reasons, and calibrates to you. Full comparison + roadmap: docs/master-plan.md.
Live now: core on npm Β· Claude Code plugin Β· extension beta with Alt+L. Next: preview diff (3.C) β dashboard + BYOK (3.D) β history & media savers (3.EβF) β Web Store (3.H) β measured benchmarks + paper + playground (Fase 4) β smart compress + language packs + 1.0 (Fase 5).
Κ -α΄₯- Κ zzz β the mascot, conserving tokens
Built with respect on the shoulders of two excellent projects: caveman by Julius Brussee and ponytail by Dietrich Gebert. iamtoolazy exists because their work proved the ideas.
MIT. Made with minimal effort, by design.

