
Issue → Fix → Review → Deploy
Ghost Foundry
Turns GitHub issues into reviewed pull requests, with a human holding the merge button.
- Next.js 16
- React 19
- TypeScript
- SQLite
Full stack · AI automation · Real-world systems
I'm a senior full-stack developer who builds products, automation, and the infrastructure underneath them. I turn complicated problems into practical software that actually gets used.
Issue → Fix → Review → Ship
Autonomous development, with human control.
Fix authentication error in production
#4287 · opened 2 hours ago
12 export async function authenticate(req: Request) {13- const token = req.headers.authorization13+ const token = req.headers.get("authorization")1415 if (!token) throw new AuthError("No token")16 return verifyToken(token)
Agent summary
Auth headers weren't being read correctly behind a proxy. Switched to the Headers API, added regression tests, and improved error handling.
View pull requestFeatured projects

Issue → Fix → Review → Deploy
Turns GitHub issues into reviewed pull requests, with a human holding the merge button.

Agent command center
One place to run and supervise many Claude Code and Codex sessions, locally or over SSH.

Commerce platform rebuild
A custom storefront, checkout, and production platform replacing a WordPress and WooCommerce site.

Health media network
Scheduled TV-style channels, creator studios, and on-demand video for a health media company.

Snap · Research · List · Sell
A phone-first resale tool: photograph an item, let an agent research it, get a ready-to-post listing.

AI screenplay development studio
Script coverage, development, and pitch packages, produced by a pipeline of specialized agents.


More than code
Software should solve real problems and make life easier. That's what I focus on, whether it's automating boring work, building products people love, or standing up the systems that let a business scale. Right now that means agent tooling, a health media network, a screenplay studio, and commerce platforms for real clients.
About meNotes
Checkout buttons, retries, and webhooks all happen more than once. Design for it on day one.
Letting agents write code is the easy part. Deciding where their reach ends is the design.
Postgres, a job table, and a symlink. The unexciting choices are the ones I never have to think about again.