Skip to content

I built wdx with wdx: a team of AI agents wrote most of its code

The wdx mark at the root of a tree: an approved design doc, then a plan of tasks, then several agents' branches merging into main

In 16 days wdx went from its first commit to v0.5.0: 703 commits and about 185,000 lines of Go, generated code left out. All of that code was written by AI agents, run by wdx itself. I did the planning and the design, with in-depth analysis and brainstorming, and every approval.

This is how that works, and why it is not magic. You keep using your favourite AI CLI the way you did before. What wdx adds is an orchestration layer: one screen to run and keep track of many agents, and plans that carry pre-planned work on, step after step, until something needs a person.

050K100K150K200K0246810121416days since the first commitv0.1.0, 2026-10-28 (day 2): 11,064 Go linesv0.1.0v0.2.0, 2026-11-01 (day 6): 50,104 Go linesv0.2.0v0.3.0, 2026-11-03 (day 8): 85,421 Go linesv0.3.0v0.4.0, 2026-11-07 (day 12): 129,069 Go linesv0.4.0v0.5.0, 2026-11-11 (day 16): 185,168 Go linesv0.5.0 · 185,168
Go lines in the tree at each release, generated code left out, by day since the first commit on 26 October 2026.

wdx is the next-generation warden, an agent tool I had built before; the logo writes it wdˣ, with the x as an exponent. The x has a second meaning. wdx dropped tmux and built its own detached terminals, which keep running when you close the window and let you attach again as tmux does. The screen of each one is kept by x/vt, which I forked to add fixes, patches and features of our own on top.

So there were no big surprises. I had built something like it, and over time I had learned what is actually needed and how to build it. warden’s story gets a post of its own later in this series.

Until wdx had attach, I built it with a single Claude Code agent. Only one, so I would not lose focus or get confused by switching contexts. The early development was slow, but very well thought out.

Once agents could be attached, I started using that a little. Once attach was complete, I moved to TIDE, the Terminal IDE, because that is what gives the full benefit of wdx: many agents, all visible on one screen and easy to keep track of. TIDE is where I work now, and I never leave it.

Building wdx with wdx also gave me continuous feedback: every feature was tested in real work, and the pain points and the improvements showed up in my own day.

commits050100150200250v0.1.0: 32 commitsv0.1v0.2.0: 185 commitsv0.2v0.3.0: 76 commitsv0.3v0.4.0: 190 commitsv0.4v0.5.0: 220 commitsv0.5220Go lines added010K20K30K40K50K60K70Kv0.1.0: 11,012 Go lines addedv0.1v0.2.0: 41,208 Go lines addedv0.2v0.3.0: 36,124 Go lines addedv0.3v0.4.0: 45,919 Go lines addedv0.4v0.5.0: 63,019 Go lines addedv0.563,019
Per release: the commits since the release before, and the Go lines they added, generated code left out. Each chart has its own scale.
Release Date Commits Go lines (of which tests) Go lines added
v0.1.0 28 Oct 32 11,064 (4,781) 11,012
v0.2.0 1 Nov 185 50,104 (23,032) 41,208
v0.3.0 3 Nov 76 85,421 (38,232) 36,124
v0.4.0 7 Nov 190 129,069 (59,095) 45,919
v0.5.0 11 Nov 220 185,168 (86,398) 63,019

The first rule of the workflow in wdx’s AGENTS.md, the file every agent working on it reads, is: Never start coding until the human explicitly says so. Design comes first, worked out with an agent: the structure, the tables, the commands, the names, the edge cases.

That design is a wdx doc: kept in wdx rather than in the repository, with a revision per change and a status, wip, then review, then approved. Every agent reads the same doc the moment it changes, whatever branch it is on. wdx itself has 77 of them today: 34 approved, 12 in review and 31 still wip.

wdx tide · shop-api
A doc in TIDE: designs live in wdx, with a status that says whether they are agreed on. Click, scroll and type: it is live, and runs nothing.

From approved design to a plan that runs for hours

Section titled “From approved design to a plan that runs for hours”

Once a design is final, I ask an agent to turn it into a plan: the work split into tasks, each with the tasks it waits for (after:). Then I let the plan run, and check on it now and then. Sometimes a plan runs for hours without needing me.

Running a plan makes a branch for it, plan/<name>, and starts an agent for every task that is ready, each in a worktree of its own, up to plan.parallel at once (3 by default). When a task is done, wdx lands its work on the plan’s branch, after the project’s landing check, and starts what waited for it. A task that fails waits for me; the rest goes on. When every task is done, one worktree is left on the plan’s branch, and landing it is my call.

You design itwith an agent, as a docYou approve the docwip → review → approvedAn agent writes a plantasks, each with its after:Agents run the tasksone per task, in worktreesEach lands on plan/<name>after the landing checkYou review and land itwdx worktree landa task that fails waits for you; the rest goes onyouagents and wdx
Teal is yours to do: the design, the approval and the landing. The rest is the agents' and wdx's, and a task that fails waits for you.

Here is the same thing on a toy project, with real Claude Code agents: three tasks, two at once and one after both.

A plan of three tasks on a toy repository: wdx runs each task’s agent once what it waits for is done.
wdx tide · shop-api
A plan in TIDE, drawn the way git log --graph draws commits. Click, scroll and type: it is live, and runs nothing.

wdx has 51 plans so far: 31 done, 18 drafts and 2 running as I write this. This blog series is one too, a plan of plans called blogs: each post is a plan, and this one was written by an agent wdx started, from an outline I approved.

On a normal day I run five or six agents at once. At most I have had twelve to fifteen, some of them started and managed by plans.

Agents also split their own work. Every agent wdx starts gets a launch note telling it that it runs under wdx and to read wdx help agents, so when it wants a subagent it makes a child agent through wdx instead, in a worktree of its own. The children show up in TIDE under their parent, where I can watch, answer or steer them.

A Claude Code agent splits a change between two child agents, each in a worktree of its own, on a toy repository.

Claude Code is the AI CLI I used most. I used the others now and then, for reviews and documentation. That is why each new feature reaches Claude Code first and the other AI CLIs later.

Yours

Every approval, every review, and when to land the code.

The agents'

Writing the code, in worktrees, and carrying a plan on until something needs you.

All the approvals, the reviews and the decision of when to land are still human. More autonomy will come, but it has to be designed carefully: taking away only the repetitive, no-brainer work, and still leaving the complex reasoning and the decisions to a person.

wdx runs on Linux and macOS. Keep the AI CLI you already use; wdx runs it.

  1. Install wdx and open a project:

    Terminal
    curl -fsSL https://raw.githubusercontent.com/srjn45/wdx/main/scripts/install.sh | sh
    wdx project open --local ~/code/api
  2. Start an agent in a worktree of its own, and open TIDE:

    Terminal
    wdx agent create --name fix --worktree fix
    wdx tide
  3. When the work is bigger than one agent, write a plan and run it.

The code, the issues and every release are on GitHub.