Selected projects

Six things I built on my own time. Most of them came from something that annoyed me.

unimem: one memory for every coding agent

One local memory that Claude Code, Codex, Cursor, and other agents share. It lives in a single SQLite file on your machine. An agent looks something up only when it is missing context, and it must give a reason, so a normal turn makes no lookup at all.

A correction you give an agent becomes a memory only after you repeat it in a second session. One-off instructions never stick. With no LLM in the loop, it ranks the right conversation in the top 5 for 96% of LongMemEval-S questions.

Python standard library · SQLite · MCP

SearchX: a small, private browser for the Mac

It runs on WebKit, the engine already inside macOS, so it ships no engine of its own. It is 12.6 MB on disk and opens its first window in 324 ms. A tab you leave alone for 30 minutes goes to sleep and frees its memory.

SearchX applies the uBlock Origin filter lists inside the WebKit network layer, so the browser never requests a blocked ad. The WebKit blocker cannot run filters like :has-text or :xpath, so SearchX runs those itself. The new tab redraws any picture you pick as pixel art.

Swift 6 · WebKit · macOS 14+

omfx: a coding agent in Zig

My own coding agent CLI, about 3 MB. After every write it parses the file, and if the edit broke the syntax it rolls it back before the model is told it worked. That check covers 36 languages.

When the context window fills, older turns get compacted on your machine, not rewritten by an LLM, and the dropped text stays around as citations you can open. It talks to 9 model providers and ships 27 built-in tools.

Zig · Python · shell

Bread: guardrails for coding agents

Ongoing

A Rust layer that sits between a coding agent and your repo. It caps how much a single file read or search can return, records where every piece of context came from, and refuses an edit if the file changed since the agent last read it.

It also keeps a search index inside the workspace, for plain text and for code structure. The code, the index, and any optional vectors never leave your disk.

Rust · Codex CLI · tree-sitter · ripgrep-style search

Ozark: test lab for AI agents

Runs an agent through adversarial scenarios on your own machine and scores it on five things you’d want to know before deploying it.

The Python side replays and diffs traces, checks guardrails, and tests live agents over HTTP or stdio.

Python · React 19 · Vite · SQLite (WAL)

Ghosted: job search for visa holders

I built this while job hunting on a visa. It answers “does this company actually sponsor?” with 119k+ H-1B records, 23k+ company profiles, 9k+ salary entries, and 4.4k+ live listings.

Celery and Redis workers pull from applicant tracking systems, drop duplicates, and match listings to your resume with TF-IDF. It also generates PDF reports.

Django · React · TypeScript · PostgreSQL · Redis · Celery