I'm building Enzyme Labs, which makes local-first tools that turn your notes, meetings, and messages into context agents can use. Before that I worked on agentic products and ML at Spotify.
I write about tools, taste, writing, and attention at joshpham.com.
Most of what I build sits where personal knowledge bases meet agents. One part is compiling a vault into something an agent can find its way around without grepping the whole thing. The other is capturing what happens away from the keyboard (meetings, handwriting, a ring on your finger) and getting it back into Markdown.
If you're working on agent memory, knowledge-base retrieval, or capture hardware, reach me on X or join the Enzyme Discord.
- Enzyme
- A local-first compile step for knowledge bases. It indexes notes by how tags, links, and folders get used over time, and it writes "catalyst" questions ahead of time so agents can find their way around without grepping. 119 releases, 100k+ release downloads.
- Margins
- Meeting capture that lives in your vault. You get a timestamped notepad and local transcription. Then it turns your scattered jottings into a connected note, using context from your other meetings and documents. Plugs into BB, Claude Code, Codex, and Cursor.
- Enzyme for Obsidian
- A chat agent in the Obsidian community plugins that knows the ideas in your vault. It quotes notes with clickable links and lights up the graph nodes it used.
- Scrawl
- A handwriting keyboard for Boox tablets that works in any app's text field. Available on Google Play.
- Digest
- A 2,400-line agent that talks to your vault on local models. Lookup through Enzyme takes 8ms, so a full answer costs 5-8K tokens instead of 60-90K.
- locket - A self-hosted agent for wearables. Pebble Index ring and Omi pendant recordings become vault notes, Todoist tasks, calendar events, or BB threads. Transcription and voiceprint speaker ID run locally.
- seatwatch
- Sold-out movie? It watches AMC and Alamo seat maps and pings you when a cancellation frees a seat. Built as an agent-friendly CLI with a Claude skill.
- cull - Picks keepers from thousands of RAW photos in under a second by reading the camera's embedded previews. A native Rust app with a Lightroom and Capture One handoff. getcull.fyi
- bb
- Fixed the lost first tap on mobile follow-up submit, added multiword mention autocomplete, retried read-only host RPC timeouts, and stopped content filters from blocking plugin frontend bundles.
- Agent Village (Edge City)
- Agents for residents at Edge Esmeralda 2026: a calendar-led morning brief, a tenant token-usage audit cron, Agent Plaza engagement, and a fix that stops tool-call scratch from leaking into replies.
- Ollama
- Fixed adapter loading from a SHA hash.