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, pdf-filter, and more. Compiled Go,
run in-process. They collapse diff hunks, strip dep-tree chatter,
keep the failing tests, redact secrets from HTTP archives, and read
PDFs without shelling out. Nothing a model could do better, faster,
or more reliably — and Python is off the compression path
entirely: it's needed only to rasterize a scanned PDF for
OCR.
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 by default. Optional OpenTelemetry emission is off unless you set THLIBO_ENABLE_TELEMETRY, and even then it ships only sizes, counts, and durations to a collector you run — never your code, prompts, commands, or file paths. 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