When I shipped KittyClaw two weeks ago, the tool did one thing: serve as a board. The Claude agents ran alongside - first by hand, then via a dispatcher.mjs: a Node script polling KittyClaw's API, triggering the right agent based on who was assigned to which ticket.

The dispatcher worked great. It orchestrated Aekan's 13 agents for weeks. But it was an external process: one more node dispatcher.mjs to launch, a state file (dispatch-state.json) to keep in sync, logs to dig up in .agents/channel/debug.log, a config to copy-paste across projects in JS.

Today, the dispatcher doesn't exist anymore. Orchestration lives inside KittyClaw. I run dotnet run on KittyClaw, nothing else. Aekan's 13 agents still run - but the infra that drives them is now a first-class citizen of the board.

This shift from "dispatcher on the side" to "dispatcher inside the board" is small in lines of code, but it completely changes what the tool is. And how I work.

This piece documents KittyClaw, the kanban orchestrator at the center of the Ekioo agent-fleet R&D. Alongside Bloomii (constructive-journalism media) and Kalceo (regulatory B2B SaaS for construction contractors), KittyClaw runs the AI agents that drive these projects in production.