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 server that Claude Code, Codex, Cursor, and other agents share. It lives in a single SQLite file on your machine, uses only the Python standard library, and makes no network calls.

An agent looks something up only when it is missing context. It must give a reason for each lookup, and it gets back at most three memories, 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.

Python standard library · SQLite · MCP

Bread: guardrails for coding agents

A local Rust tool that sits between a coding agent and your repo. It caps how much a single file read or search can return. It also refuses an edit if the file changed since the agent last read it.

It indexes the workspace with tree-sitter, supports ripgrep-compatible search, and tags every piece of context with its source. The code, the index, and any optional vectors never leave your disk.

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

omfx: a coding agent in Zig

My own coding agent CLI. After every write it checks the file for syntax errors. If the edit broke the syntax, it rolls the edit back before the model is told it worked.

When the context window fills, older turns get compacted on your machine instead of rewritten by an LLM. The dropped text stays around as citations you can open. An allowlist blocks untrusted tool output by default.

Zig · Python · shell

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. 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+

Ozark: test lab for AI agents

Runs an agent through adversarial scenarios on your own machine and scores it before release.

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?” by joining H-1B records, company profiles, salary data, and live job 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