Commander used to live across two domains — runcommander.com for the marketing landing and commander.dekimu.com for the customer dashboard. As of today, that's one domain, one repo, one cookie. The customer dashboard moves to runcommander.com/dashboard, mirrored at commander.es/dashboard for Spanish. The dekimu.com subdomain retires.
The original split made sense on paper: marketing on a top-level brand, dashboard on the company subdomain, founder ops untouched. In practice, every customer hop crossed a cookie boundary, every shared component lived in two places, and every deploy was a coordination problem. Two repos, two Vercel projects, two sets of envs. The simpler shape — one repo, one project, two domains aliased — does the same job with a third of the moving parts.
All dashboard surfaces — license, instances, run history, ops, settings — moved into the commander-landing repo. The slug consolidated from `commander-app` to `commander`. The auth cookie renamed to `commander_access`. The agent token renamed from `CLAUDE_CODE_OAUTH_TOKEN` to `COMMANDER_AGENT_TOKEN` with a one-cycle legacy fallback so existing workers don't break on the cutover. Type-check green across all four touched repos; thirty-nine worker tests still pass.
The right architecture is the one with the fewest seams that customers can feel. We had two seams. Now we have zero.
Nothing — that's the point. Old commander.dekimu.com URLs return one-time redirects to the new path. The license server keeps the same shape and signs the same payloads with the same key. Existing workers heartbeat against the new URL after a single env flip. The Stripe webhook re-points when checkout re-enables. From the user side, runcommander.com is now the whole product: pricing on the front, dashboard on the back, single login between them.
Decision doc is up at the architecture log; the migration brief and full system map are public. Commander itself stays gated on the activation triggers we wrote down weeks ago — the domain collapse was always a precondition, not a launch.