Skip to content

The stack

What I build the systems on this site with, and why each piece is there. A tool list on its own teaches nothing - the reasoning is the useful part.

Agents and orchestration

Where the work actually gets done.

Claude Code
The orchestration layer. Skills and plugins turn a repeatable playbook into a command, so the work that used to need a hire becomes something I invoke by name.
Claude Agent SDK
For agents that run outside a terminal session - scheduled jobs, long-running loops, anything that has to survive me closing the laptop.
Model Context Protocol
How an agent reaches a real system. One protocol instead of a bespoke integration per tool, which means a customer's own AI can drive my software rather than mine driving theirs.
Markdown on the filesystem
Agent memory. Plain files, in git, greppable and diffable. A database would be faster to query and far worse to reason about when something goes wrong.

Identity and money

The half nobody demos, and the half that decides whether it can ship.

WorkOS
SSO, SAML, OIDC and SCIM without building an identity provider. Enterprise auth is table stakes the moment software touches someone else's data, and it is not where the interesting work is.
Stripe
Payments and Connect. Anything that moves money sits behind an approval gate - an agent can prepare the charge, a human releases it.

Runtime and data

Cheap, fast, and boring on purpose.

Cloudflare Workers and Pages
Edge runtime and static hosting on one platform. This site is Pages; the agent-facing services are Workers.
Neon
Postgres with branching. A database branch per environment means a migration can be tried somewhere real before it touches production.
Astro
Static by default, ships almost no JavaScript. For a content site the correct amount of client-side framework is close to none.
Tailwind CSS
CSS-first configuration, design tokens in one file. Constraints in the token layer beat discipline in the markup.