← All tools

fajarhide/omni

AI Agent
Popularity 75 Updated AI & Agents

Noise-canceling context and long-term memory for your AI agent. Stop paying Claude to read 10,000 lines of terminal noise like a headphone for AI agent

githubauto-collected

Installation

A directly usable install command is not verified yet. Check the project documentation or releases.

<div align="center" <img src="media/logo.png" alt="OMNI Logo" width="300" /

<h1OMNI</h1 <p align="center" <em<bYour agent pays twice for output it has already seen.</b OMNI hands back a retrievable handle instead: <b97.2%</b off a file it reads twice. Across a whole session it takes about a tenth of the repetition your work actually contains, which was <b1.5%</b of file-read bytes on the corpus below. How repetitive your work is decides where you land between those two. Nothing deleted, nothing invented, and every number here replays on your own history.</em </p

🇺🇸 English | 🇯🇵 日本語 | 🇨🇳 简体中文 | 🇸🇦 العربية | 🇮🇩 Bahasa Indonesia | 🇻🇳 Tiếng Việt | 🇰🇷 한국어

</br</br

brew install fajarhide/tap/omni && omni init

</br <img src="media/demo.gif" alt="OMNI distilling a noisy cargo test run down to the verdict, then omni stats" width="820" / </div

---

What it does

Drops the noise. Build logs, Docker layer hashes, progress bars, ANSI colour. The part of the output nobody reads is removed before it reaches the model.

Stops re-sending what the agent has already seen. A run of lines it was shown earlier in the session comes back as one marker with a handle, not as the bytes again. This is the half a filter cannot do: it removes bytes because they are already in the context, not because a pattern calls them noise.

Remembers across sessions. Restart your editor or switch agents, and the project context is still there.

Gets out of the way. A failing command passes through verbatim. JSON, YAML and CSV are never touched. Most commands are handed back unchanged, and that is the intended behaviour rather than a gap.

<img src="docs/website/src/media/where-omni-sits.svg" alt="OMNI runs as two hooks around a tool call: a pre-hook before the command, a post-hook that distills the output before the agent reads it, with everything it removes archived to a local SQLite database that omni retrieve reads back." width="820" /

It runs as two hooks around a tool call your agent host already makes. Nothing proxies your shell, and the database never leaves the machine.

---

The second read is free

An agent re-reads the same file constantly. Without OMNI it pays for every byte again. With OMNI the second read is one marker carrying a handle, because those bytes are already in its context, and omni retrieve <hash hands the file back in full if it is ever needed.

<table <tr <td align="center"<bWithout OMNI</b<br/<sub<codecat</code twice: the same 7.6 KB, twice</sub</td <td align="center"<bWith OMNI</b<br/<subsecond read 214 B, <b97.2%</b smaller</sub</td </tr <tr <td valign="top"<img src="media/demo-ledger-without.gif" alt="the same file read twice with no OMNI: two identical screens of source" width="400" /</td <td valign="top"<img src="media/demo-ledger-with.gif" alt="the same file read twice through OMNI: the second returns one marker line and a retrieval handle" width="400" /</td </tr </table