What I build
Things I made
see them on the desk →(the 3D version)There's a 3D version of this desk. It needs a bigger screen.This browser doesn't run WebGL.It moves, and your system asks for less motion.
The list
Five categories
agents-and-toolsappsgamesmusicresearch
HyprMacA keyboard-driven tiling window manager for macOS. Caps Lock becomes a Hypr key and windows stop being your problem.2026
A keyboard-driven tiling window manager for macOS. Caps Lock becomes a Hypr key and windows stop being your problem: dwindle tiling, ten workspaces, directional focus and swap across monitors, no SIP disable. It's event-driven off the accessibility APIs instead of polling, ships through a Homebrew tap, and updates itself. Public and MIT.
SynapseOne brain, three machines. The same memory, secrets, and registry for every agent I run.2026
One brain, three machines. Synapse gives every agent on my fleet the same memory, secrets, and registry, synced over a private network. State replicates through one Go daemon that runs identically on every device; services like local inference or decryption get called on whichever machine owns the resource. Privileged actions wait for a human approval I can grant from my phone. Built in about a month, and it runs my daily work.
NEPTRThe agent I text. One front door to my classes, my code, and my machines.2026
I gave my AI a phone number. NEPTR is the agent I text, and it's the one front door to everything else I run, from my course brain to my three machines to the Claude Code sessions that do the actual work. It answers questions grounded in my real lectures, moves files between machines, codes in any repo, turns my sloppy texts into good prompts, and hands me the session link when I want the wheel. It runs on Hermes, an open-source agent framework (not mine), on an always-on Mac mini with its own Apple ID. Months of building, and it's the most personal, genuinely useful agent I've used. The code is private. The talk I gave the AIML Club about it is the explainer.
HuskDescribe an app to Claude. Minutes later it's native on your iPhone.2026
Describe an app to Claude on your Mac, and a few minutes later it's native on your iPhone. Husk scaffolds a SwiftUI app from a template, builds and notarizes it locally, and publishes to a private, token-gated store you install over the air. No App Store review, no TestFlight, no jailbreak. I've shipped six apps through it, several of them the phone front-ends for my own infrastructure.
GroveA tended home for everything around a project that isn't code: notes, docs, drafts.2026
A tended home for everything around a project that isn't code: notes, docs, drafts, references. Drop a file in and Grove files it where it belongs and keeps the project's context current, so any coding agent opens to a clean, well-described workspace. It never deletes: every reorganization is reversible with one click. Built in Rust, and the project I'm deepest in right now. Released as a downloadable app at heygrove.net.
live-codebase-mapA live map of your codebase, for understanding code at the speed agents write it.2026
An idea I'm actively developing. Agents write more of our code faster than anyone can read it, so understanding has to move up a level, to modules, dependencies, and what's safe to touch. The plan is a live visual map of the codebase that updates as agents work, with no LLM calls needed to keep it current, so the time between prompts becomes time spent understanding what just changed. A lightweight first draft exists, and the design is still moving while I brainstorm the right shape for it.
UTulsa Course BrainAgents connected to my academic life: lectures, Harvey, and deadlines in one repo my AI can read.2026
One git repo that holds my whole semester, structured for agents: every lecture transcribed and filed automatically (Granola), every assignment and due date mirrored from the university's Blackboard portal through a scripted SSO login and its JSON API, deadlines synced to Todoist, and anything ambiguous (a due date moved in lecture, an odd Blackboard change) flagged to my phone for a one-tap decision instead of being auto-applied. An always-on Mac mini runs the syncs on a schedule generated from each class's timetable. My instance stays private; the sanitized public template shipped 2026-08-24 for other TU students.
BonsaiPractice management for orthodontists, with AI tools that take the busywork off the team.
A production product for orthodontic practices, live at its first practice with more signed up. It handles the work of running a practice and ships a set of AI tools that streamline the mundane parts of the job, so doctors spend their time on patients instead of admin. I develop it out of a private repo; the product site is joinbons.ai.
AIPP courseAn intro-to-AI course running in Oklahoma high schools, on a presentation engine we built.2026
Artificial Intelligence: Principles and Practices, an intro-to-AI course being taught in Oklahoma high schools right now. Dallas Elleman and I spearhead it. Oklahoma is the point, not a limit: it is the lowest-ranked education state in the country, and this is work to strengthen that community and improve education where it is needed most. Every lesson is an HTML presentation running on a presentation engine we wrote ourselves, generated with LLM help so each deck and the material around it (entry and exit tickets, student handouts, teacher guides) stay consistent. The course site is public, teacher view included; the development repo is not.
pi-labMy personally-owned coding agent harness, built on top of stock pi instead of forking it.2026
A research and build repo for a coding agent harness I fully own, built on top of the open-source pi agent by extending it, never forking it: custom TypeScript extensions layered on stock pi, with versioned config and machine setup scripts so the same harness runs on both my Arch Linux and macOS machines. The rule that shapes the repo is that the architecture stays visible: a textual source of truth and a living visual map (mermaid, with stock vs custom vs planned encoded in color) must be updated in the same commit as any change to the harness's shape.
claude-subscription-shimAny OpenAI-compatible tool, answered by my Claude subscription. No API key.2026
A stdlib-only shim that turns a Claude subscription into an OpenAI-compatible API endpoint. shim.py serves /v1/chat/completions and /v1/models and writes each request to a file mailbox; a Claude Code agent you start in a normal session watches the mailbox and writes the answers back. No model in the repo, no API call anywhere, and structured output (json_schema) passes through, so tools that need it just work. Born from running HackerRank's open-source hiring-agent resume scorer end to end on subscription alone. Public and MIT.
SidenoteA macOS app that sits in your meetings and turns them into living project knowledge.2026
A macOS app that sits in your meetings and turns them into living project knowledge. It records and transcribes on-device, then runs a pipeline that writes the summary, pulls out action items, updates a per-project context doc, and syncs tasks to Todoist, Reminders, and Calendar. The files on disk are the source of truth; the database is just an index rebuilt from them. External agents reach the knowledge base through a bundled MCP server, so there is nothing to subscribe to.
SpendMeSelf-hosted budgeting that learns. Rules first, a small model for the leftovers.2026
Self-hosted budgeting that learns. It pulls my card transactions each day, categorizes them, and pings my phone when a category is getting close to its limit. Categorization is rules first, then a small model for the leftovers, and whatever the model decides gets written back as a rule, so each merchant costs at most one model call ever. Runs on my own hardware; it's tracked close to a thousand real transactions so far.
localflowPush-to-talk dictation on my own Whisper server. Private, fast, everywhere I type.2026
Push-to-talk dictation on my own Whisper server. Hold a key, talk, and the text lands wherever I am typing, cleaned up by a local model. Private, fast, and everywhere, because it talks to the same self-hosted stack that serves the rest of my machines. It even knows when my GPU box is busy gaming and offers to wake the server instead of hanging.
friday-llmThe framework that serves my local models to any machine I own. friday is under the desk.2026
The framework that serves my local models to any machine I own. friday is the GPU box under my desk, and it doubles as a gaming rig, so the model server loads weights on demand, unloads them when idle, and shuts down entirely the moment a game launches. Everything talks to it through one OpenAI-compatible endpoint. Idle cost on the card is basically zero.
deal-hunterA bot I built with my Hermes agent to watch the used-hardware market for local-LLM rigs.
A bot I built with my Hermes agent to watch the used-hardware market for local-LLM rigs: specific GPUs, high-memory Macs, the integrated-memory mini PCs. It normalizes messy listing titles down to real products, keeps price history, and flags anything running well under its recent median so a good price reaches my phone. Adding a new source is a small, well-defined contract. No public repo, by design.
prismThe last Omarchy theme (and wallpaper manager) you'll ever need.2026
Turn any wallpaper into a full desktop theme. prism pulls a palette from the image, builds a complete color scheme, and expands it across fourteen app configs at once, checking contrast before it writes a single file so nothing comes out unreadable. It's also the wallpaper manager, with rotation and a built-in Wallhaven browser. For Omarchy; public, MIT, and on my machine daily.
omarchy-amber-glassDark Omarchy theme: warm-pastel palette, frosted glass.2026
A dark Omarchy theme: warm-pastel palette, frosted glass, one accent color you can swap across everything at once. Hand-tuned down to the terminal gradient and the launcher animations. A small, finished thing. (prism is the grown-up version that generates themes instead of hand-writing them.)
project-cerebroA dashboard for running my OpenClaw agents.2026
A dashboard for running my OpenClaw agents. Tasks live in one execution stream; recurring ones spawn on schedule, a heartbeat loop drives them, and each agent routes its own notifications. Outbound email is human-in-the-loop: an agent can draft, but I approve before anything sends. My biggest single push on one repo, six weeks of it, from before the fleet era.
OllamaHelperModuleThe little wrapper I still reach for whenever anything touches local models.2025
A small Python wrapper I built for my research and still reach for whenever something touches local models. It wraps a local Ollama model with conversation memory, system instructions, and a hand-written tool-calling loop, in about 130 lines. Deliberately minimal: the point is the reusable Agent class, not a framework.
ChefMindMy first app: grocery list, kitchen inventory, and an AI chef in one.2024
My first app. A grocery list, a kitchen inventory, and an AI chef in one: check items off the list into your pantry, then ask what you can cook from what you actually have. The chat knows your inventory because it's built into the prompt. SwiftUI, a one-week build in 2024.
AIPlaylistMakerA ChatGPT-powered Spotify playlist maker, from very early in my LLM days (2023).2023
Describe a vibe, get a Spotify playlist, cover art and all. From early 2023, before the chat API existed: it asked text-davinci-003 for twenty songs, built the playlist, then generated the cover with DALL-E 2. Very early LLM days, and it shows. Kept for the timeline more than the code.
Musical-Key-DetectorListens to whatever's playing and tells you the musical key.2024
Point it at whatever's playing and it tells you the musical key. The trick is that it doesn't analyze the audio at all: it Shazams the song, looks it up on Spotify, and reads the key from the metadata. A one-day build. I play guitar, so it scratched a real itch.
Microphone-Input-into-Guitar-TabsPlay into the mic, get guitar tab back. Pure signal processing, no libraries beyond numpy.2024
Play into the mic, get guitar tab back. Pure signal processing, nothing beyond numpy: it windows the audio, picks the fundamental frequency per frame, smooths the notes, and maps them to the lowest playable fret. Monophonic only, and a weekend of work, but the whole pipeline is hand-rolled.
Pi-Spotify-LyricsA Raspberry Pi now-playing display for Spotify: album art as a spinning vinyl record.2025
A Raspberry Pi now-playing display for Spotify. The album cover spins like a vinyl record over a moving gradient, with floating lights colored from the art itself. There are two renderers, a CPU one and a GPU-shader one for the Pi's sake, and that rewrite was the real work. The name is aspirational: I pulled the lyrics out while chasing the visuals.
Multiagent-LLM-Negotiation-FrameworkThe 2024 codebase my negotiation research grew out of.2024
The 2024 codebase my negotiation research grew out of. Two LLM agents split a set of tasks between them, each holding private preferences, talking in plain language but committing every offer as strict JSON. A scoring engine brute-forces the true optimal split, so I can measure how close the agents actually get. Research code, not a product.
MultiAgent-LLM-Negotiation-Research-DomainThe negotiation framework, generalized into a multi-domain research platform.2025
The framework, generalized into a research platform with two negotiation domains behind one interface: splitting items, and bargaining over a single price. It also generates training data from deterministic strategy agents and holds Janus, an experiment that conditions one frozen 7B model on a single continuous knob so it can span aggressive to conceding without retraining. Ongoing, unpublished work.
Single-Price-Point-Negotiation-DomainA clean extraction of just the price-bargaining domain: a buyer and a seller, one number.2026
A clean extraction of just the price-bargaining domain: a buyer and a seller negotiate one number inside a zone of agreement. It carries the whole pipeline, data generation through adapter training and benchmarks, with a lot of care spent keeping the training and inference prompts identical. The model has to work out whether it's buyer or seller from the control signal alone. Ongoing, unpublished.
self.kbThe knowledge base behind this whole site. Built to be forked; the template is public.2026
The knowledge base behind this whole site. One source of truth for who I am and what I've built, and everything here, the copy, the projects, the story, is generated from it. My instance stays private, but the framework is public: a template anyone can fork and fill in through a built-in, agent-run interview.
Shifty-ShapesAn original sliding-puzzle game, released on itch.io.2023
An original sliding-tile puzzle: slide tiles until the center of the board matches a target pattern before the clock runs out, across three difficulty tiers. Built in Unity and released on itch.io. The one game here I designed from scratch instead of following from a book.
20-Minutes-Till-SunriseA team-built zombie wave-survival shooter in Unity.2023
A top-down zombie wave-survival shooter in Unity: aim with the mouse, hold off escalating waves, last as long as you can. A four-person team project, and I was the busiest committer on it.
ConwaysGameofLifeConway's Game of Life with a JavaFX interface (2022).2022
Conway's Game of Life with a JavaFX interface: presets, a speed slider, live generation and FPS counters. Under the hood it stores only the living cells in a hash set instead of a full grid. My oldest project here, from 2022.
32 projects, 10 archived
The archive (10)
MeetingScribemeeting transcription; the lighter cross-platform alternative to Sidenote2026
The app that became Sidenote. A menu-bar meeting recorder: capture system audio, transcribe on-device, then run a Claude Code pipeline that writes the summary and syncs tasks to Todoist and my calendar. It went from first commit to a public release with auto-updates in under three weeks. Sidenote grew past it with Mac-only features; MeetingScribe stays the lighter alternative that can run on Linux.
Timeframean idea that got as far as the write-up2025
An idea that got as far as a write-up: a Flutter calendar with an LLM assistant that takes events in plain language and reasons about your free time. I never seriously started building it. The repo is the README.
LociSynapse's retired predecessor2026
Synapse's predecessor. A shared brain for my machines that synced by pulling from git. It worked, but the manual sync was the exact fragility I built Synapse to fix. Retired, kept for the lineage.
Procrastination-intervention projectLLM interventions grounded in Temporal Motivation Theory2026
Research code for studying whether an AI agent can nudge someone out of procrastinating, grounded in Temporal Motivation Theory. It's co-authored work that got postponed, and I'm honestly not sure it'll go anywhere. Here because it's a real part of what I've been working on, not because it's finished.
LLM-Recommender-Systempreliminary research, dropped2025
An early stab at a conversational recommender: an LLM that chats with you, quietly learns your taste, and was meant to hand structured queries to a real recommendation engine. I built the conversation and preference-learning parts, then dropped it before the recommender itself. Preliminary, and abandoned honestly.
RL independent studya semester through Waterloo's public CS885 material2025
A semester of reinforcement learning I did as an independent study, working through the University of Waterloo's public CS885 course material on my own. It implements the classics: value and policy iteration, then tabular Q-learning with epsilon-greedy and Boltzmann exploration. Self-study from open course material, not an affiliation.
Transcriptomics projectgrad bioinformatics coursework2026
A grad bioinformatics project: a replication and extension of a published deep-learning method for predicting phenotypes from gene expression. I forked the authors' cross-validation library and added three more models, including a swap away from a solver that would have taken most of a day per run. Coursework built on someone else's method, and credited as such.
Mission-Demolitionan Angry-Birds-style Unity game from a game-design textbook2023
An Angry-Birds-style slingshot game in Unity: drag to aim, launch, and drop a shot into the goal. A tutorial project from a game-design textbook, from the semester I picked up Unity.
SpaceSHMUPa top-down Unity space shooter from a game-design textbook2023
A top-down space shooter in Unity: fly, dodge, and clear waves of enemies. Another build from that game-design course's textbook, kept for the record.
Apple-Picker-Projectthe first Unity game I made, from a textbook tutorial2023
A catch-the-falling-apples arcade game in Unity, and the first one I made. A textbook tutorial from my intro game-design course.
What I build
~/synapse λ claude
✳ Working… (esc to interrupt)
reading tools/blockout.py…
~/husk λ codex · running tests
# click this pane and mash your keyboard
█
- rebuilding this site as my actual desk (you're in it)
- getting the blog off the ground
- pushing small local models further (the research thread)
I start things the moment they itch. Everything in here either got finished or stopped itching.
- · meeting transcription; the lighter cross-platform alternative to Sidenote
- · an idea that got as far as the write-up
- · Synapse's retired predecessor
- · LLM interventions grounded in Temporal Motivation Theory
- · preliminary research, dropped
- · a semester through Waterloo's public CS885 material
- · grad bioinformatics coursework
- · an Angry-Birds-style Unity game from a game-design textbook
- · a top-down Unity space shooter from a game-design textbook
- · the first Unity game I made, from a textbook tutorial
private project · no public repo