All thoughts
AI-assisted development

What's on my desk (September 2026)

A list of the AI tools I use every day, and what each one is good for.

This isn’t a review and it isn’t a recommendation. It’s a list of the tools I use every day, with a note or two on each. It’ll be out of date by Christmas, which is sort of the point.


The agents

Claude Code is the main tool. Terminal-first, which suits me. Most of the value isn’t the model, it’s what sits around it: a CLAUDE.md (or AGENTS.md, or whatever the tool calls it) in each project that says how things are done here, skills for jobs I repeat, and MCP servers that connect it to the tools I already use. A browser plugin handles browser testing.

Codex is the second opinion. For bigger builds I split the roles. One model writes, a different model reviews, and it loops until the reviewer says pass. Two models checking each other catch things that one model checking itself won’t. It has browser plugins for testing too.

Hermes.

The Hermes Agent banner in yellow pixel lettering.
Hermes Agent, from Nous Research. Image from the Hermes project.

A local model for private work. I’ve settled on Qwen3.8-27B (MLX, 6-bit) running in oMLX. It’s capable, it handles a large context window, and it matters for privacy-focused clients: their data gets worked on without ever going to a cloud provider.

The oMLX admin dashboard showing serving stats, API endpoints and a Claude Code launch command.
oMLX's admin dashboard: serving stats, a local OpenAI and Claude-compatible API, and a ready-made command for pointing Claude Code at a local model. Screenshot from the oMLX project.

The desk itself

Ghostty replaced iTerm2. The agents live in the terminal now, and a lot of them draw full-screen TUIs: panels, progress bars, diffs, menus. Ghostty is fast and renders all of that cleanly. It’s also designed to work out of the box with no configuration, and it does. I installed it and got on with things.

The Ghostty ghost logo drawn in ASCII characters on a dark terminal background.
Ghostty's ghost, drawn in text. Image from ghostty.org.

Talking instead of typing. I’ve started using voice a lot more, on the computer and the phone. ChatGPT’s real-time voice was the first time talking to a model felt like a conversation. Then Claude’s voice modes.

FluidVoice, running locally. Now it’s FluidVoice on the Mac: press a hotkey, talk, and the text lands in whatever app has focus, agent prompts included. The transcription runs on the machine, so nothing leaves it. For a long, rambling prompt, talking beats typing by a mile.

FluidVoice's dictation overlay transcribing speech into an Apple Notes window.
FluidVoice's overlay, dictating straight into whichever app has focus. Screenshot from fluidvoice.org.

Memory and context

Atomic is the memory. Notes, research, briefs, half-formed ideas. The agents search it before they answer, so I’m not re-explaining the same context every session. We share the databases across developers, so it’s becoming the 2050 brain. This post started life as an atom.

RAG, a few different ways. For retrieval-augmented generation we’ve built on Supabase, plain Postgres with pgvector, and SQLite with a vector extension (sqlite-vec) for small, local setups. We’ve also tested Qdrant. My default now is pgvector: one database, nothing to keep in sync, and only move to something specialised when it measurably hurts.

CLAUDE.md and memory files. Small, boring, and the thing that makes the biggest difference. “We use pnpm.” “Don’t touch the payments module.” “Client names stay off the website.” Write it down once and it stops coming up.


Plugged into everything else

MCP servers, APIs, CLIs and webhooks: the agents connect to wherever the work already lives.

Trello for the brief. The agent reads the card and its acceptance criteria before it starts. Less “I assumed you meant”, more “the card says”.

Slack and Teams for catching up. A digest of the channels I missed, or a draft of my standup from what I actually did. I still read it before it goes anywhere. We’ve built Slack and Microsoft Teams integrations for clients too, so updates land in the channels people already watch.

Markdown for everything. Specs, plans, research and notes are all markdown. People can read it, git can diff it, and it’s what LLMs read best. When I share a spec with a client, they can drop it straight into their own AI tools.


Side projects

This website. Built in Astro with Claude Code and Hermes, and posts drafted in Atomic first. The site is its own test bed.

Old projects, brought back. Things I built years ago and let rot get revived on podocarp.nz. Reviving a dead codebase is a very good way to find out what an agent actually understands.

And some for fun. An MCP server that lets a model arrange loops into a full track in Ableton Live. A Minecraft server on the Hermes box that the agent set up in one go. Neither is client work, and both are surprisingly good tests.


A few things I’ve learned setting all this up:

  • Don’t copy someone else’s setup. Try things, keep what works, delete the rest. Your CLAUDE.md is yours to edit.
  • The setup around the model matters more than the model. Memory, tests, a second reviewer, a browser check.
  • Everything on this list gets things wrong. The point of the setup is to catch it before a client does.

Ask me again in three months. Half of this will have changed.