What this is
I build a Mac app called Ducktate. I do not type most of the code any more. I run a small team of AI agents, and I act as the orchestrator: I frame the work, split it, hand each piece to a model, then check every result before it counts.
This course is that setup, written down. Seven short modules. Every command and every config file is real and copyable. Nothing here is a demo.
There is a second half to it. I keep learning things the hard way, and I write each one down the day it happens. Those are the field notes. Read the modules for the finished shape. Read the field notes for what broke this week.
Who it is for
You already use an AI coding tool. You are happy with one file. You are not happy with a whole feature. You want more hands without lowering the bar.
You need a Mac or Linux box, a terminal, git, and at least one paid AI coding plan. The modules tell you which ones I use and why.
The short version
One brain plans. Cheap hands build. Tests decide. I merge.
The brain is Claude Code on Claude Fable 5.1. It never writes the product code. It writes the plan, the tests, and the packs. The hands are cheap: OpenCode Go models on a flat plan, and Codex models on the ChatGPT plan. Both plans subsidize my Claude usage. The cheapest backend that passes the bar wins. The quality bar does not move.
Free, and it stays free
No email. No signup. Copy anything on any page.
The modules
- 6 min
The split
Why one big plan handed to one big model is the wrong shape, and what to split instead: the deciding, the building, and the checking, into three separate jobs.
- 8 min
Hire the brain
Claude Code as the orchestrator: the skill set that puts a session in conductor mode, the subagent model policy, and why a result is only a claim.
- 11 min
Hire the hands: Codex
Install Codex CLI, write the lane profile as its own toml file, symlink AGENTS.md to CLAUDE.md, and run one lane with a strict JSON report you can trust.
- 6 min
More hands: OpenCode Go
A flat, rate limited monthly plan with several models behind one command. Which one I dispatch, which are on hold, and why the auto flag stays off by default.
- 10 min
The lane pack and dispatch.sh
The two to three kilobyte pack that turns a cheap model into a clean run, and the runner that refuses main line branches and runs the tests itself.
- 9 min
The daily loop
What a working session actually looks like: session start reads, worktrees, dispatch, verify, kick back, merge, and a ledger that survives a context compaction.
- 9 min
Calibrate before you trust
How a model earns a row in the routing table: three closed tickets, one pack, a fresh worktree per run, an Opus scorecard, and a hold list nobody argues with.
Latest field notes
- 2026-09-09 Codex in the workspace-write sandbox cannot run XCTest. The XPC call is refused. A compile only build works with the...
- 2026-09-08 OpenCode lanes respected the scope list in nine of nine runs. One file each, and the test file never edited.
Where the code lives
- The skill repo on GitHub, with the orchestrate skill set and the three standing agents.
- The install prompt, if you would rather have Claude set it up.
- The orchestrator stack, the article this course grew out of.
Talk to Claude instead of typing to it.
Ducktate turns what you say into clean text, on your Mac, and pastes it anywhere.
Get early access