Uses
Last updated
The tools behind this site and my agent work. How I put agent systems together (memory, tools, approvals and the rest) is a separate topic, covered in The agent stack I keep coming back to.
This site
- Astro 5, with MDX. Every page is built ahead of time, and posts are Markdown files in the repo.
- Tailwind CSS 4 for the design tokens, with plain CSS for most of the styling.
- Netlify for hosting, plus a few of its extras: two functions (the JSON API and the MCP server), an edge function that serves a Markdown version of each page to agents that ask for one, and Netlify Forms for the contact form.
- A hand-written MCP server at
/mcp, one Netlify function with no dependencies. I wrote up how it works in Adding an MCP server to my blog. - Search in the browser. The search box ranks a small static index in your browser. Related posts come from embeddings I compute on my own machine with Transformers.js and commit to the repo, so nothing runs per visitor.
- sharp for image resizing and astro-og-canvas for the social cards, both at build time.
- Self-hosted fonts: Space Grotesk for headings, Inter for body text and JetBrains Mono for code.
- Google Analytics 4 for aggregate traffic. The privacy page has the details.
- reveal.js for my talk slides.
Agent work
- Claude Code. I make most changes to this site with it, and the repo has a
CLAUDE.mdthat explains how the site fits together. It’s also what I used to rebuild Agent Pinball’s AI player, with several agents working in parallel. If you’re new to it, start with One folder to autonomy, the companion to my talk on first steps. - Codex. I built the first version of Agent Pinball with it, mostly by playing the game and asking for changes.