Stop paying Claude to read 10,000 lines of terminal noise. OMNI cuts git by 89%, cargo by 91% and kubectl by 77% before your agent ever sees them. Everything else passes through untouched. Nothing is ever lost, and it never invents a result.
🇺🇸 English | 🇯🇵 日本語 | 🇨🇳 简体中文 | 🇸🇦 العربية | 🇮🇩 Bahasa Indonesia | 🇻🇳 Tiếng Việt | 🇰🇷 한국어
git 89% · cargo 91% · kubectl 77% · 21 ms per command · 0 of 9,965 calls ever grew the output · every cut recoverable byte for byte · cross-session memory
brew install fajarhide/tap/omni && omni initWorks with Claude Code, Cursor, Windsurf, Codex and Roo out of the box.
Your agent reads every line your terminal prints. Build logs, Docker logs, CI logs, progress bars, ANSI colors. Thousands of tokens to find one line. Claude isn't expensive. Your terminal is.
And it forgets all of it overnight. Restart Cursor, switch to Claude Code, and you re-explain the project from scratch.
OMNI fixes both, and stays out of the way everywhere else.
Without OMNI, one commit's Author / Date / body already fills the screen. With
OMNI, every commit is kept, as one hash subject line, 94% smaller. Nothing is
summarised away.
| Without OMNI raw git log -15 |
With OMNI every commit kept, 94% smaller |
![]() |
![]() |
| Command | Without OMNI | With OMNI | Saved |
|---|---|---|---|
cargo test (490 passed, 10 failed) |
16.5 KB of per-test output | the runner's own pass/fail summary | 92.9% |
git status (dirty) |
496 B of porcelain | the branch and the changed paths | 61.7% |
docker build (heavy cache noise) |
9.2 KB of layer hashes and progress bars | the build result, cache hits folded | 35.9% |
git diff (multi-file) |
lockfiles, whitespace, generated churn | the code that actually changed | 25.2% |
kubectl get pods (35 pods, 5 crashing) |
the full table | the full table | 0%, by design |
Where it does nothing, on purpose. A command that fails is passed through verbatim, because a hidden error costs more than an uncompressed one. Structured output (JSON, YAML, CSV) is never touched, because the next step in your pipeline is going to parse it. That is what makes it safe to leave on for every command you run.
Two promises, and both are in the code rather than in this paragraph.
Nothing is ever lost. Every byte OMNI cuts is archived locally in the
RewindStore, keyed by SHA-256. The agent gets a hash with the distilled output and
can call omni_retrieve to pull the original back byte for byte, mid-conversation,
without re-running your command.
It never makes something up. A distiller that recognises nothing in its input
returns the raw input. That is a type, not a convention: distill returns
Option<String> and the routing layer falls back to the original whenever it gets
None. There is no code path that produces a green "no errors" line OMNI did not
read.
| Guarantee | How | Proof |
|---|---|---|
| Get the original back, byte-for-byte | everything cut is archived in a local SQLite RewindStore; the agent gets a hash and calls omni_retrieve |
Architecture |
| Never fabricates a result | a distiller that parsed no signal returns the raw output, never a green no errors / passed string |
#143 |
| Failures are never masked | a command that exits non-zero passes through verbatim | #120 |
| Structured data is never touched | JSON / YAML / NDJSON / CSV pass through byte-for-byte | pipeline::format |
Measured on the release binary by replaying 9,965 real command executions from one developer's actual usage:
- On the commands that actually generate noise, 76 to 91%.
cargo91.4%,git89.2%,kubectl76.5%. That is where your context budget goes, and that is where OMNI works. - OMNI acts on 1 command in 10, and adds zero bytes to the other 9. It is a filter, not a summariser. When there is nothing to cut it gets out of the way completely.
- Not one call in 9,965 made the output larger.
- 43.3% fewer bytes across the entire mix, noisy and quiet commands together.
- 21 ms per command end to end, growing with your history rather than with the payload. On a 205 MB database it is 61 ms.
Full corpus, per-command breakdown, fixtures and latency tables:
docs/BENCHMARKS.md. Reproduce them with
cargo test --release --test bench_replay -- --ignored.
Every tool in this category publishes a percentage. Here are the five questions that decide whether it means anything, and our answers:
| Question | Why it matters | OMNI |
|---|---|---|
| What share of calls saved nothing? | A tool that saves on every command is summarising output you needed | 90.0%, published |
| Did any call make the output larger? | Markers and headers cost bytes; nobody reports the ones that backfire | 0 of 9,965 |
| Which population was measured? | Counting terminal bytes no model reads inflates the number for free | model-facing only, and saying so costs us 36 points |
| Can you re-run it? | A number you cannot reproduce is a claim, not a measurement | one command, on your own data |
| Is the cut recoverable? | Lossy is fine when it is reversible, and fatal when it is not | byte for byte, via omni_retrieve |
We publish the share of calls where we did nothing because it is the number that tells you what the rest are worth.
macOS / Linux:
brew install fajarhide/tap/omni
omni init # interactive setup for Claude, Cursor, VS Code, Codex, Antigravity
omni doctor # verify, or `omni doctor --fix`Universal (macOS / Linux / WSL):
curl -fsSL omni.weekndlabs.com/install | bashWindows (PowerShell):
irm omni.weekndlabs.com/install.ps1 | iexThen run your commands normally. There is nothing to prefix and no proxy to wrap.
Does OMNI permanently delete my logs? No. Raw logs are stored locally in the SQLite RewindStore. The agent receives a hash and can retrieve the full log at any time.
Will this slow down my terminal?
Measurably, yes, and the cost grows with your history rather than with the payload. A
496-byte git status takes about 21 ms against a fresh database and 61 ms against a
205 MB one. Budget for it. OMNI_PASSTHROUGH=1 skips the pipeline entirely.
Can I add my own filters? Yes, in TOML:
# ~/.omni/signals/custom.toml
[filters.my_tool]
match_command = "^internal-tool\\b"
strip_lines_matching = ["^DEBUG", "syncing..."]How do I see my own savings?
omni stats after a few days. omni stats --share prints a copy-pasteable summary
of the same figures.
- How it works, and what it costs: pipeline, RewindStore, the Memory OS
- Benchmarks in full: corpus, per-command, fixtures, latency
- Contributing:
make ciand you're in
brew install fajarhide/tap/omni && omni initA passion project for the era of agentic AI. Contributions welcome. MIT License.
Built with care by Fajar Hidayat


