git diff HEAD~5
via git-filter · native Go
~17,205 tok
→
~232 tok
−98.6%
a utility · ancient greek · mit license
θ θλίβω — to press, crush, compress.
thlibo sits between your AI coding agent — Claude Code, Codex, Cursor, GitHub Copilot CLI, or VS Code Copilot — and the shell.
It rewrites git diff, npm install, cargo test
and other verbose commands so the model sees the summary, not the
noise. Deterministic native-Go filters handle the usual suspects; a
local Gemma 4 model compresses everything else. Nothing leaves
your machine.
$curl -fsSL https://raw.githubusercontent.com/3rg0n/thlibo/main/scripts/install.sh | bash
PS>irm https://raw.githubusercontent.com/3rg0n/thlibo/main/scripts/install.ps1 | iex
{"level":"error","ts":"2026-07-08T17:01:03Z","msg":"connection refused","host":"db-primary.internal:5432","attempt":1,"request_id":"req-7001"} {"level":"error","ts":"2026-07-08T17:02:03Z","msg":"connection refused","host":"db-primary.internal:5432","attempt":2,"request_id":"req-7002"} {"level":"error","ts":"2026-07-08T17:03:03Z","msg":"connection refused","host":"db-primary.internal:5432","attempt":3,"request_id":"req-7003"} … 117 more identical "connection refused" lines … {"level":"warn","ts":"2026-07-08T17:40:00Z","msg":"pool exhausted","size":20} {"level":"info","ts":"2026-07-08T17:59:00Z","msg":"reconnected","host":"db-primary.internal:5432"}
{"level":"error","ts":"2026-07-08T17:01:03Z","msg":"connection refused","host":"db-primary.internal:5432","attempt":1,"request_id":"req-7001","_count":120} {"level":"warn","ts":"2026-07-08T17:40:00Z","msg":"pool exhausted","size":20} {"level":"info","ts":"2026-07-08T17:59:00Z","msg":"reconnected","host":"db-primary.internal:5432"}
{ "log": { "version": "1.2", "creator": {…}, "entries": [ { "request": { "method":"GET", "url":"…/assets/chunk.1.js" }, ← 26 static assets "response": { "status":200, "content": { "size":48120, "mimeType":"application/javascript" }}}, … { "request": { "method":"POST", "url":"…/v2/auth/login?client_id=PUBLICAPP", "headers":[{"name":"Authorization", "value":"Bearer sk-live-9a8b7c6d5e4f3g2h1i0j"}], "postData":{"text": "{\"password\":\"tr1n1ty!42\",\"username\":\"neo\"}"}}, "response":{"content":{"text": "{\"token\":\"eyJhbGciOiJIUzI1NiJ9.eyJ…\"}"}}}, …
HAR 1.2: 2 requests (26 static dropped) POST 200 …/v2/auth/login?client_id=PUBLICAPP (json 180B 312ms) Authorization: <redacted> → {"password":"<redacted>","username":"neo"} ← {"expires_in":3600,"token":"<redacted>","user_id":1007} GET 200 …/v2/profile?access_token=<redacted>&scid=<redacted> (json 140B 88ms) ← {"email":"neo@example.com","name":"Neo Anderson"}
# Claude can't read the image-only PDF as text, so it # bootstraps its own pipeline, then reads the pages as images: $ pip install pypdf pdfplumber pypdfium2 ← install noise $ python render.py → page-1.png (1191×1684) $ python render.py → page-2.png (1191×1684) [image] page-1.png ~1,590 tok [image] page-2.png ~1,590 tok # multi-step, multimodal, and the model re-reads pixels # on every follow-up question.
## Page 1 # Peninsula Property Surveying Ltd 16. The client agrees to pay the full survey fee, which is £250, within 7 days of the invoice date. If payment is not received within 7 days, a £50 late fee is added… Signed: ____________ Date: ___ / ___ / ___ ## Page 2 Phil Routledge MRICS FISVA MRPSA MAE Chartered Building Surveyor · RICS Registered Valuer [RICs Logo] [Signature]
From: <Saved by Blink> Content-Type: multipart/related; boundary="----MultipartB…" ------MultipartBoundary… Content-Type: text/html Content-Transfer-Encoding: quoted-printable <!DOCTYPE html><html lang=3D"en">… the article … ------MultipartBoundary… Content-Type: image/webp ← 67 jpeg + 11 webp + svg, Content-Transfer-Encoding: base64 iVBORw0KGgoAAAANSUhEUgAAAA… (megabytes of base64) … ------MultipartBoundary… (6 CSS parts too)
# Inside Hyper-V Sockets: A Deep Dive… ## Introduction Microsoft introduced its Hyper-V virtualization technology quite some time ago… Hyper-V Sockets connect to VMs from the host using the VMBus as transport instead of TCP/IP. - Root partition — Windows Server with the Hyper-V role. - Guest OS — a Generation 2 virtual machine. [image ref] · [More on VMBus](https://…/vmbus) # prose, headings, lists, links, code — no asset bytes.
thlibo installs a Claude Code PreToolUse hook.
Before the Bash tool runs, the hook asks thlibo rewrite
whether to wrap the command. If yes, it swaps
git status for thlibo exec -- git status.
The same idea reaches four more agents. Codex and GitHub Copilot CLI use the symmetric PostToolUse path — the compressed result replaces the tool output. Cursor and VS Code Copilot rewrite the command on the way in, like Claude Code. One engine underneath.
git-filter, npm-filter, cargo-filter,
har-filter, and more. Compiled Go with tight regex rules,
run in-process. They collapse diff hunks, strip dep-tree chatter,
keep the failing tests, redact secrets from HTTP archives. Nothing
a model could do better, faster, or more reliably — and no Python
needed.
Add your own in ~/.thlibo/processors/<name>/ — a
processor.yaml descriptor and a script. It picks
up on next invocation.
When no deterministic filter matches, thlibo asks a local Gemma 4 E4B — quantised, ~5 GB on disk — which processor (if any) to route to. Prompt processors summarise stack traces, error logs, and arbitrary output. The same model reads images: a scanned PDF with no extractable text is OCR'd page-by-page through Gemma 4's vision path, so a photographed contract comes back as real Markdown instead of a "no text" placeholder.
Inference runs in inferd, a separate sidecar daemon thlibo installs alongside itself. One warm model per host. Unix socket or named pipe, ACL'd to your user.
If any step fails — daemon down, model missing, script crashes — the original bytes pass through unchanged. The model sees what it would have seen without thlibo. The compressor never breaks the client.
thlibo runs as your user. The daemon binds a Unix domain socket (or Windows named pipe) with an ACL that grants only your SID access. Nothing listens on the network.
No telemetry. No opt-in-to-ship-anonymised-usage-data. No HuggingFace token required — the model pull is a plain anonymous HTTPS GET against a public Apache-licensed repack, SHA-256 pinned at build time.
If your repo has a clause against uploading source, thlibo does not violate it. If your model is air-gapped, it works offline.
# IPC endpoints, per platform (inferd sidecar) linux $XDG_RUNTIME_DIR/inferd/inferd.sock darwin $TMPDIR/inferd/inferd.sock windows \\.\pipe\inferd # permissions infer 0660 group inferd-users (or user-only) admin 0600 owner only # single-instance lock $XDG_RUNTIME_DIR/inferd/inferd.lock # model, on disk (shared per-platform store) linux ~/.local/share/models/gemma-4-e4b-ud-q4-k-xl.gguf darwin ~/Library/Application Support/models/... windows %LOCALAPPDATA%\models\... 5,126,304,928 bytes · sha256 pinned