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.