AI systems and product engineer
I build the infrastructure, tools, and product surfaces that turn model capability into dependable software.
My work sits across two layers that are usually treated separately. I build agent runtimes with durable state, typed provider boundaries, replayable events, permission controls, process execution, delivery receipts, and recovery. I also build the products on top: voice systems, commerce, enterprise assistants, image workflows, and the interfaces that make autonomous behavior understandable, trustworthy, and delightful to use.
Right now, my main project is goldengoose, a native desktop environment for running teams of coding agents in parallel. I use it every day to build itself and the rest of the projects below. I extracted its runtime lessons into Gooselake, a headless control plane for agent applications.
| Area | Technical focus |
|---|---|
| Agent infrastructure | Durable sessions, state machines, event replay, recovery, provider abstraction, MCP, SSE, worktrees, background processes, and agent-to-agent delivery |
| Developer tools | Go CLIs, single-binary distribution, Git and GitHub automation, API adapters, least-privilege credentials, and tag-driven releases |
| AI products | Tool-calling agents, realtime voice over WebRTC, RAG, generative UI, image pipelines, multi-tenant applications, and operational dashboards |
| Product engineering | TypeScript, React, Next.js, PostgreSQL, SQLite, Drizzle, object storage, typed contracts, observability, and browser-level verification |
| Systems engineering | Rust, Tauri, Axum, bounded concurrency, lifecycle invariants, idempotency, delivery semantics, and failure recovery |
The systems I trust make their important boundaries explicit: one owner for state, typed contracts between layers, observable failures, and a verifier at the end of every autonomous loop. That discipline is what lets me move quickly without treating agent output as ground truth.
- Gooselake ·
Rust· docs: A headless runtime for Codex, Claude, and ACP with durable sessions, replayable SSE, background processes, worktree execution, recovery, and receipt-backed team messaging. - Zodex ·
Rust· docs: A remote coding MCP server that gives ChatGPT a real Linux workspace through the three Codex-native tools, with separate operator and agent binaries enforcing the permission boundary. - Agentbox ·
GoTypeScript· app: A shared inbox where remote agents connect over MCP and local agents use a Go CLI, backed by Postgres and R2, with a Next.js inbox UI and a Raycast extension for macOS.
- agentscript ·
Go· docs: A CLI that normalizes Claude Code and Codex JSONL transcripts into stably addressed blocks, then exports small, context-efficient Markdown handoffs instead of raw transcript noise. - webctx ·
Go· docs: A web search and page scraping CLI that queries Brave, Tavily, and Exa concurrently, merges and ranks their results, extracts pages into context-efficient Markdown, and maps sites into URL inventories. - cf-cli ·
Go· docs: An agent-first Cloudflare operations CLI for DNS, recent Workers logs, R2, account profiles, Wrangler switching, and minting narrowly scoped tokens for API operations it does not wrap yet. - icloud-cli ·
Go· docs: A CLI for Apple's iCloud ecosystem, with a comprehensive iCloud Mail client for account setup, synchronization, search, reading, attachments, drafts, sending, organization, import/export, S/MIME, recovery, and automation. - spaceship-cli ·
Go· npm: A least-privilege Spaceship.com domains and DNS CLI whose binary intentionally contains no domain transfer, registration, or deletion capability. - procoder ·
Go: A CLI for getting real Git commits out of ChatGPT's locked-down sandbox: it exports a sanitized offline repo, then verifies and imports only the new history withgit bundle. - ZueDocs ·
AstroTypeScript· demo: A versioned documentation shell and scaffold CLI shared across my projects, with raw Markdown routes, Mermaid, theme support, page actions, and automated npm releases.
- Zodega ·
Next.jsPostgreSQL· app: A mult-vendor apparel marketplace with storefront, seller, and admin surfaces, plus realtime voice shopping, generative product search, reference-photo try-on, and AI media workflows over one commerce model. - Icephone ·
Next.jsPostgreSQL· app: A self-hosted voice agents platform with configurable agents, a CRM, cold-calling campaigns, queues, scheduling, and Twilio, Telnyx, and Vonage behind a durable call-lifecycle model. - HR Agent ·
Next.jsPostgreSQL· app: An enterprise HR assistant with tool-layer RBAC, RAG, auditable conversations, leave and approval flows, SLA-aware cases, budgets, and model observability. - AgentStudio ·
Next.jsPostgreSQL· app: An agentic image studio where a chat model operates multiple image models for you, automatically routing between generation and editing while preserving every result as a versioned artifact. - Product Pics ·
Next.jsPostgreSQL· app: A batch apparel-photo pipeline for turning up to 100 flat product images into varied lifestyle shots, with direct R2 uploads, asynchronous generation, per-image retries, and zip export. - Presentation AI ·
Next.jsPostgreSQL· app: An AI presentation maker that turns long-form source material into designed slide decks: a reasoning model plans the narrative and theme, then an image model renders each slide as a complete visual composition. - Digital Business Cards ·
Next.jsPostgreSQL· app: A white-label platform for managed contact profiles, branded QR and NFC entry points, mobile public pages, and one-tap vCard downloads that work across Android and iOS. - ChatGPT App Template ·
Next.jsMCP· demo: A starter for OpenAI Apps SDK products with the MCP metadata, iframe asset handling, cross-origin RSC support, browser patches, and a working tool-to-widget example already wired.
- Git is my multi-agent protocol: Why exact commit ranges, cherry-pick, and disposable integration branches became the coordination layer underneath my agent teams.
- Find the verifier: A model of agent work built around objective gates, fresh reviewer contexts, and the rule that implementers never certify their own output.
- The frontend was harder than the runtime: What happens when a React frontend becomes a replica and scheduler for dozens of concurrent, history-rewriting streams.
- Every harness gets background processes wrong: Why long commands need owned lifecycles, observable logs, and completion-driven wakeups instead of polling inside an agent turn.
- The answer is almost always a CLI: Where CLI priors, context cost, self-documentation, and MCP's stateful identity lead to different tool choices.
- Agents don't pay the Rust tax: Why Rust's compile-fix loop becomes a correctness subsidy when agents write the code and durable state is on the line.
If the difficult part of your product lives between the model, the runtime, and the person using it, send me a note.




