Ben's dev setup 2026 edition

18 Feb 26

dev

New year, new dev setup. This year the theme is:

a life lived in (text) tokens

Agentic software develompent tools (Claude Code, Codex CLI, Opencode, pi, Continue, etc) have become pretty crucial to my workflow, and they work best when consuming and producing text and calling CLI tools which do the same.

So I’ve re-jigged my entire development workflow again. Emacs lasted me ~20 years, and while I like Zed and enjoyed the setup I’ve moved on from that just two years later. This year, as part of my commitment to a life lived in tokens, I’m moving back to purely terminal apps1.

The core of it is

I could write up more about it, but honestly if you’re curious just look in my dotfiles, because it’s all in there.

The main reason I switched from Zed is that it’s fundamentally a GUI app. There are ways to mount remote projects, but I always found them a bit flaky. I’m increasingly working across lots of different remote machines via ssh2. Terminal stuff just works, Zed takes setup and mental energy.

The other reason I moved was that even though Zed can run agentic coding agents via the ACP (in fact I think they invented it) the DX isn’t as nice. For example, there’s no /resume command so you can’t resume an old conversation. It seems like the companies making these agentic harnesses are trying out new things in the “native” terminal app first, and if/when those things make it to the ACP spec is unknown.

The final bonus is that most of the above tools are also configured via text config files (to be fair, so is Zed). So Claude has been helping me set up this new environment so that it’s to my tastes. A handy tool I found is ht-mcp which is a MCP server that can run a headless terminal app, so that Claude Code can even e.g. open a file in helix and issue commands to do stuff. That’s been really handy for debugging things when they haven’t worked correctly.

The other thing about running multiple agentic coding sessions is that they leave stuff behind—orphaned browser processes, dev servers still listening on random ports, that kind of thing. I wrote a small lsagents script that gives me a live dashboard of all running AI agents, stray processes and dev servers on the machine. It’s become one of those tools I didn’t know I needed until I had five Claude Code sessions, two Geminis, a Codex and a handful of phantom Vite servers all competing for resources.

Anyway, we’ll see if this stack satisfies me long-term—at this rate of change (20 years in Emacs, then 2 years in Zed) I might be changing it all up again in 2 months.

Footnotes

  1. with my usual strong preferences for OSS + tools which run on both macOS and Linux

  2. fly sprites are particularly interesting as a bit of a middle ground between fully-reproducable Docker stuff and randomly spinning up VMs to mess around.

Cite this post
@online{swift2026benSDevSetup2026Edition,
  author = {Ben Swift},
  title = {Ben's dev setup 2026 edition},
  url = {https://benswift.me/blog/2026/02/18/ben-s-dev-setup-2026-edition/},
  year = {2026},
  month = {02},
  note = {AT-URI: at://did:plc:tevykrhi4kibtsipzci76d76/site.standard.document/2026-02-18-ben-s-dev-setup-2026-edition},
}