I work in finance and build with AI agents the rest of the time: games, tools, agents and experiments, mostly shipped with Claude Code. Here's the pile.
An Indy 500-style arcade racer that runs in the browser: qualify, roll off behind the pace car, take the green with 33 cars.
Brickyard is a Pole Position-style arcade racer set on a 2.5-mile banked oval, playable with keyboard, gamepad or touch. The engine is hand-written vanilla JavaScript on WebGL2 with drafting, pit stops, cautions, instant replay and a synthesized engine sound; the cars and trackside scenery are rendered in Blender and packed into sprite atlases by a Python pipeline. Scores go to a small online leaderboard.
Your phone becomes a window into a night stadium. Check your shoulders before the pass, then play it from memory.
A soccer awareness trainer: you physically turn with the phone to look around the pitch before the ball arrives, tap CONTROL as it reaches you, and then every live player disappears so you have to pass to where you remember a teammate was. The reveal shows how old your picture was instead of grading the choice. The stadium, players, ball and crowd are generated by Blender scripts and rendered in the browser with three.js, driven by the phone's motion sensors.
One command: Opus plans, GPT builds, GPT or Grok reviews. No evidence, no merge.
relay is a command-line loop that turns a feature request into a spec and thin slices, then builds each slice with a fresh-context coding agent and has a separate read-only model review it against real test output or screenshots. Repeated rejections or builder friction send the plan back to Opus instead of forcing a hack, and you get a notification when it is done or stuck. It is a Bash orchestrator over the Claude, Codex and Grok CLIs, with git branches, budget and step caps, and headless Playwright for browser checks.
prototypePythonBash1Password CLI / service accountsChrome DevTools Protocol
valet
My AI agents sign in to websites for me. They never see a password.
valet is a credential airlock for AI agents: an agent asks to sign in, and valet picks the matching login from a dedicated 1Password vault, checks guards, and types it straight into an isolated browser over CDP. The agent only gets back a status, never the secret, and anything that needs a human (an MFA number match, a missing login) becomes one push to my phone. It is Python and shell around 1Password service accounts, Chrome DevTools Protocol and Home Assistant notifications, with exact-host matching and a retry cap so it does not lock accounts out.
One message in, a small team of AI agents out: a quarterback model splits the job and hands it to specialists.
Harley is a personal AI assistant I configured and operate on OpenClaw. A quarterback model reads each request from Telegram, routes pieces to a thinker, a coder and a researcher, and logs every step to a SQLite ledger. It runs 24/7 as systemd services on a single VPS.
A self-hosted back office for a trading-card resale business: scan a card on a phone, follow it to the bank deposit, close the books.
Reseller Ops tracks every physical item from phone intake through landed cost, eBay and Whatnot sales, payouts matched to bank deposits, and an immutable double-entry subledger with period close. Cards are identified from a photo on the server itself (perceptual hashing plus local OCR), and the mobile PWA works offline and replays queued intake when it reconnects. It is Django, PostgreSQL, Celery and a React/TypeScript PWA in Docker Compose, with marketplace writes and licensed price data gated off until explicitly approved.
builtVanilla JavaScriptHTML CanvasCSSZzFX
Cabin Arcade
Tiny phone games for a week at a mountain cabin. Roast a marshmallow, hook a trout, ride the rapids.
A pocket arcade made for a group cabin trip: dozens of one-thumb games that run in any phone browser with no install. Each game is a single vanilla-JS page on a shared shell that handles sound, how-to cards and a shared leaderboard. The demo clips were recorded automatically by a headless browser script.
Weather models vs. market prices: it only trades when the forecast and the market disagree by enough to matter.
Kalshi Desk blends several weather models into a probability for each NYC daily-high bracket, compares that with the market price, and sends a signed order only when the edge clears a threshold. Every signal is scored against the closing line and a Brier score before any edge is trusted. It's Python async services running around the clock.
A light instrument for idle hands: drag the glow and the particles remember where you have been.
Afterglow is a generative light toy in a single HTML file. Pointer, touch, and keyboard input steer a particle field with bloom and trails across four color atmospheres, with an optional synthesized ambient score that only starts when you ask for it. It is plain JavaScript on Canvas 2D and the Web Audio API, with no dependencies, build step, storage, or network requests.
prototypeReactTypeScriptViteTailwind CSS
Omakarchy
A sushi counter you run with tiling-window keyboard shortcuts. Every new diner is another terminal.
A typing-and-shortcuts game for Omarchy users: each diner opens as a terminal window, and you build five-course meals by tiling, focusing, splitting and closing windows with the same Super-key chords the desktop uses. Under the hood it is a deterministic game engine with server-side replay checks for saved runs. Built with React, TypeScript and Vite on Cloudflare Workers with a D1 database, plus a small native launcher so the browser can capture the Super key.
prototypePythonSGLangQwen3.8-27BDFlash2
Speculative Decoding Bake-off
Rented one H200, ran a 27B model plain and with a draft model on the same prompts: 3x the tokens per second.
A budget-capped harness that spins up a rented GPU, serves Qwen3.8-27B with SGLang, and benchmarks plain decoding against DFlash2 speculative decoding on identical prompts and hardware. Median throughput went from 60.9 to 183.0 tokens/s and median latency from 1.77 s to 0.52 s across 30 requests per mode, with the whole run kept under a hard $50 cap ($39.11 spent). The browser-agent half of the test was inconclusive, so it is reported as unproven rather than a win.
builtPythonFastAPIPostgreSQL + SQLAlchemyFrigate
Harley Vision — camera recognition pipeline
Camera sees a person → detection → face match → a one-line description → a phone alert you can review in one tap.
Harley Vision turns camera events into reviewed records. Frigate detects objects, CompreFace matches known faces, a vision model writes a plain-English scene description, and a Telegram alert lets you confirm, flag or label it; labels feed back so recognition improves. The demo shown uses a synthetic feed.
prototypeChrome extensionSvelteKit + TypeScriptDeepgram live transcriptionClaude Sonnet / Haiku
TWiST sidebar
An AI rail that watches a live podcast with you and talks back in character.
A Chrome extension captures the show's audio, Deepgram transcribes it live, and a rail of AI roles (roaster, prosecutor, skeptic and more) each react in their own voice beside the video without covering it. Built as a weekend contest entry for a startup podcast.
Draft eight golfers, best four count each round, and watch a live leaderboard with projected odds.
PressIsOn is a multi-tenant golf pool app: each club gets its own subdomain, members draft a tiered roster, and a scoring engine keeps a live best-4-of-8 leaderboard with Monte Carlo win projections. It's Fastify and Drizzle on PostgreSQL, with row-level security isolating each club.
prototypeNext.jsReactTypeScriptTailwind CSS
Indy Pitwall
A phone-first race companion for the Indy 500: every car on a live track map, gaps to the leader, and race records as they fall.
Indy Pitwall is a web app built to use from the grandstands on race day. A Next.js server polls the public live-timing feed every few seconds, the client places all 33 cars on a canvas track map, and tabs show standings, race-control updates, stats and how today compares with the all-time records. It installs to the home screen as a PWA.