Work
Three systems I built and operate, and the things around them. Each of the first three has a page of its own, in the product’s own brand.
Built and operating
WunderGuide
Production voice agentA voice-first travel concierge, live in the App Store and Google Play, launched Hawaiʻi-first — and a platform of about thirty services behind it, on k3s with blue/green deploys. A LiveKit agent grounded in live itinerary, location, travel-time and weather context under a real-time latency budget, given a wide tool surface to pull that context in. Retrieval is its own service group: OCR-and-web ingestion into Qdrant with reranking and reciprocal-rank fusion, a graph store alongside it, an MCP endpoint so other clients can use the same knowledge base, and hybrid vector + full-text search over Postgres for deals and business profiles.
See it →Sigil
Agent-session infrastructureA daemon that turns tmux into a supervised process manager for long-running AI agent sessions — observable, interruptible, attachable from any device over HTTPS, and auto-restoring after a host crash. Built because operating a fleet of coding agents surfaces failure modes no local harness handles: the one that matters most is an agent blocked on a permission prompt, alive and doing nothing, with nobody watching.
See it →Mycellm
Distributed inferencePool heterogeneous hardware, contribute capacity, draw on it. What runs today is a QUIC overlay with NAT-friendly reverse connections — seeders dial out and the gateway routes inference back down the live session, because hole-punching does not survive symmetric NAT. It speaks the standard API at both ends: a drop-in OpenAI-compatible endpoint for tools that already exist, and behind it a node either serves local weights (MLX, llama.cpp) or brokers any compatible upstream — the caller cannot tell which, which is the property that makes pooling machines useful rather than merely possible. The iPad and iPhone app is a first-class node rather than a client: it loads a local model and joins the network, public by default. Continuous batching gives about 4.3× aggregate throughput at 32 concurrent streams with single-stream latency unchanged, and a 30B MoE about 1.9× at 16 — different machines at different concurrencies, both on the case page. Hyphae, the companion harness, exists for the same reason: schedule agent work across uneven hardware instead of assuming one fast machine.
See it →Also built
-
Drydock
The factory floor for the agent fleet. I describe what I want; it plans the work, dispatches it to coding agents across hosts, and brings back deliverables for review. Provenance tainting, human-gated proposals, a usage ledger and rate-limit ceilings decide what is allowed to run unattended.
-

GentlePrep
Clinical-prep companion for iOS and Android, built after my own procedure because the instructions I was handed were a photocopied sheet and a phone number. You photograph that sheet and a vision model turns it into a structured instruction set, which a deterministic scheduler counts back from your appointment into a timeline. Shipped and operated solo — store ops, IAP, the lot — alongside full-time work, with organic search and app-store discovery as the only acquisition channel.
-

Span
A bridge builder for iPhone, iPad and Mac, and a deliberate test of how far I could parallelise a build with agents and still land something finished. A deterministic structural solver written from scratch with no third-party dependencies, a live X-ray of tension and compression on every beam, 57 levels across eight worlds and a level editor — specified, directed and shipped in the margins of other work.
-
E Pluribus
If you can bank on your phone, why can you not vote on it? Not because the cryptography is missing — tamper-evident ledgers, zero-knowledge proofs and verifiable receipts are all settled work — but because nobody has stacked them into something an ordinary person can trust and an election official can audit. This is that attempt: revocable delegation, signed receipts, ranked-choice tallying, over an append-only ledger built so a public chain can replace it. Predates everything else here; the book explaining it is still being written. The settlement layer is simulated today. Everything above it is not.