Daisy is a CLI and MCP server for running Claude Code in a loop. It builds on the Ralph Wiggum technique: Claude Code works on a task, and when it tries to exit, a hook feeds the same task back so it keeps iterating. That works, but it’s hard to see what the loop is doing, or to steer it through a larger plan. Daisy adds that structure, and runs each iteration as a fresh claude -p process instead of trapping the exit.
Parts: daisy CLI (init · start), Daemon (loop runner · Hono), Kanban board (WebSocket updates), Claude Code (one process per turn), MCP server (next task · status), Task graph (JSON · dependencies).
- daisy CLI to Daemon
- Daemon to Kanban board
- Daemon to Claude Code (spawn)
- Claude Code to MCP server (tools)
- MCP server to Task graph
Tasks live in a JSON file as a recursive tree, each with a status, dependencies on other tasks and acceptance criteria. daisy init sets up a .daisy/ folder and a prompt template, and daisy start launches the daemon and its web UI, where loops are started and watched. The MCP server gives Claude Code tools to read the current project, list tasks, get the next task whose dependencies are met, update a task’s status, read stats and signal that an iteration is complete. So the agent works through the graph itself, instead of being told what to do each time. The MCP server tells the loop runner what happened through a signal file in .daisy/, which the runner watches.
- Kanban board to Loop runner: start the loop
- Loop runner to Claude Code: spawn with the prompt file
- Claude Code to MCP server: get_next_task
- MCP server to .daisy folder: first ready task
- MCP server to Claude Code: task + criteria
- Claude Code: work on the task
- Claude Code to MCP server: update_task_status
- MCP server to .daisy folder: status + signal file
- .daisy folder to Loop runner: file watcher fires
- Loop runner to Kanban board: card moves
- Claude Code to MCP server: iteration complete
- .daisy folder to Loop runner: iteration_complete signal
- Loop runner to Claude Code: SIGTERM, then the next turn
A terminal UI shows task progress and the agent’s output side by side. A small Hono server with WebSockets serves a Kanban board in the browser, where tasks move between columns as the loop works and can be dragged by hand. Storage is plain JSON files, so there’s no database to set up, and it runs with npx.