I build mD-AI, a system that runs my coding agents in parallel on a server. At first I gave one agent one long chat and a task, and hoped for the best. It wrote code, but nothing checked it, nothing reviewed it, and it never stopped to ask me a question. So I stopped treating an agent as a chat partner and started treating work as a flow: a few roles, each with one job, in a fixed order.
The problem with one long chat
A single chat mixes everything. The same agent explores the code, decides what to build, writes it, judges its own work and ships it. When it is wrong, the mistake only shows up when I read the result. There is also no natural place to stop: if the task has an open question, the agent guesses instead of asking.
I wanted the opposite. An investigator that looks before anyone changes code, a developer who builds, a reviewer who cannot edit what it reviews, and clear points where the work waits for me. Each task also gets its own Git worktree and branch, so agents running in parallel never step on each other's files.
Flows as plain markdown steps
In mD-AI, a flow is a markdown file in the project folder, one per kind of task. Each step is a role and an instruction. I talk to an orchestrator, typed or dictated from any device. It is not a task itself: it creates the task and runs the flow, and each role is its own agent in the task's worktree.
The investigator explores without changing code and reports criteria and open questions, which the orchestrator brings to me. A role marked read-only cannot change files, so the QA step only reviews. An ASK USER step stops and waits. The word an agent ends its reply with picks the next step, and BLOCKED stops the flow and asks me.
What keeps it honest
Every retry loop has a limit. A failed QA step sends the work back to the developer, but only a set number of times. Agent updates are never dropped, yet an update with no news does not ping my phone, so a notification means something.
mD-AI also keeps an outcome log of how turns, agents and automation runs ended, with secrets redacted and no prompts stored. A built-in nightly task reviews that log and can only propose changes, a rule the code enforces. And the work keeps running after I close the browser.
Project: mD-AI