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.

agents-and-toolsview the repo on GitHub →visit the site →

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.

agents-and-toolsThe repo is private.

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.

agents-and-toolsvisit the site →

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.

appsThe repo is private.

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.

agents-and-toolsvisit the site →

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.

agents-and-toolsview the repo on GitHub →

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.

agents-and-toolsview the repo on GitHub →

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.

appsvisit the site →

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.

agents-and-toolsvisit the site →

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.

agents-and-toolsThe repo is private.

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.

agents-and-toolsview the repo on GitHub →

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.

appsThe repo is private.

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.

appsThe repo is private.

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.

agents-and-toolsThe repo is private.

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.

agents-and-toolsThe repo is private.

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.

agents-and-toolsNo 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.

agents-and-toolsview the repo on GitHub →

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

agents-and-toolsview the repo on GitHub →

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.

agents-and-toolsview the repo on GitHub →

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.

agents-and-toolsview the repo on GitHub →

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.

appsview the repo on GitHub →

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.

musicview the repo on GitHub →

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.

musicview the repo on GitHub →

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.

musicview the repo on GitHub →

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.

musicThe repo is private.

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.

researchview the repo on GitHub →

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.

researchview the repo on GitHub →

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.

researchview the repo on GitHub →

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.

agents-and-toolsview the repo on GitHub →

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.

gamesview the repo on GitHub →

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.

gamesview the repo on GitHub →

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.

gamesview the repo on GitHub →

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.

appsview the repo on GitHub →

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.

appsview the repo on GitHub →

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.

agents-and-toolsThe repo is private.

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.

researchThe repo is private.

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.

researchview the repo on GitHub →

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.

researchview the repo on GitHub →

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.

researchview the repo on GitHub →

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.

gamesview the repo on GitHub →

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.

gamesview the repo on GitHub →

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.

gamesview the repo on GitHub →

What I build

ghostty · tmux

~/synapse λ claude

Working… (esc to interrupt)

  reading tools/blockout.py…

~/husk λ codex · running tests

# click this pane and mash your keyboard

0:claude  1:codex  2:dev
What I build
archive
32 projects · click to select · double-click opens the README
Notes · now
  • 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)