“What happens when someone leaves?”
The process lived in their head, or in a prompt only they kept up to date.
The ConvOps workflow engine turns how the work should go into steps, approvals and detours that every AI agent run follows. Describe it once, in plain words, from the AI client you already use.
no canvas · no pipeline language · one step at a time
new chat
example
It stores your process as steps, gates and decisions, and hands your AI agent one step at a time, so the same work comes out the same way every run.
ConvOps is the operations layer for AI agents: an MCP server that holds your team's process as workflows, with approval gates, a shared memory and an audit trail. It runs no AI models.
updated
Long prompts get copied, edited and forgotten. The steps live in someone's head, and the checkpoints are only words.
“What happens when someone leaves?”
The process lived in their head, or in a prompt only they kept up to date.
“Why did it skip the review this time?”
A checkpoint written in a prompt is only wording. A model in a hurry talks its way past it.
“Which copy of the prompt is the real one?”
Everyone keeps their own version. Each one drifts a little, and nobody notices.
Pick what your process needs. The workflow re-lays itself, then a run goes through it and stops where you said it should.
The engine holds the cursor. Your AI asks for the current step, does it, and asks to move on. Everything else stays out of its context.
Reproduce
Recall what the team knows about checkout. Reproduce the crash in Safari and note the exact steps.
Teach each workflow what it applies to. From then on, new work attaches to the right one when it is created.
Two bugs, two people, two AI tools, three days apart. Both runs go through the same steps.
Monday. Checkout crashes on Safari. The task is a bug, so the bug-fix workflow attaches on its own. Nobody picks it.
Claude asks for the current step and gets only that: reproduce the crash. It does the work, then asks to move on.
The review detour runs its own steps. Changes requested, so the run returns to the fix, and comes back when the work passes.
The run stops at the approval. Until a person approves, the engine does not move the cursor.
A teammate picks up a different bug in Codex. The same workflow attaches. Same steps, same detour, same approval.
Different people, different AI tools, different days. The work went through the same steps, and every step is recorded on its task.
Start with an approval wherever it matters. The run waits there until a person says go. As trust grows, remove the ones you no longer need.
Each step carries its own instructions, handed over only when the work reaches it.
one at a time
A gate the engine checks on every move. Not met, the run does not go forward.
it refuses
A decision can send the work through a whole sub-workflow. It always comes back.
loops included
Child tasks that share an order start together. The parent waits for all of them.
start together
New work is matched to the workflow that owns it, by type, tags or project.
nobody wires it
IMPORTANT: always ask before releasing.
IMPORTANT: always ask before releasing.
a sentence, not a gatethe whole process, every message
A template declares what it applies to: task type, vertical, tags or project. Matching work attaches the workflow at creation.
{
"applies_to": [{
"type": "bug",
"vertical": "development",
"default": true
}]
}Your client calls workflow_advance over MCP and receives the current step only. Edit a step once and future runs inherit it.
{
"id": "failing-test",
"name": "Failing Test",
"status": "in_progress",
"instructions": "Write the test that
reproduces the crash. Red first.
Notify me when it goes green."
}Evaluated server-side on every advance: requires_approval, wait_for_children, sequential_children, task_status, require_context. A miss returns unmet_conditions and the cursor stays.
{
"current_step": "approve",
"unmet_conditions": [
"Requires explicit user approval"
]
}A decision records which condition matched. A branch is an invoke into a sub-workflow; on the way back, resume_at can point backward. That is the fix loop. There is no forward goto.
{
"decision": true,
"conditions": [
{ "id": "simple",
"when": { "task_field": "complexity",
"equals": "S" } },
{ "id": "unclear",
"invoke": "deep-research" },
{ "id": "go", "when": "default" }
]
}Child tasks that share an order value start together; the rest start one after another. Each child can target its own executor, and the parent's wait_for_children gate holds until all are done. A step can also tell your AI session to start several agents at once.
{
"children": [
{ "title": "fix", "order": 1 },
{ "title": "tests", "order": 1,
"executor": "your-runner" },
{ "title": "docs", "order": 1 }
],
"parent_gate": { "wait_for_children": true }
}Templates live in the database, built from steps, reusable fragments and org-wide globals. Edits are surgical, dry-run validated, and runs in flight survive them.
No. A prompt hands the model the whole process at once and hopes. Here the engine holds the cursor: steps are delivered one at a time as the work reaches them, gates are evaluated server-side on every advance, and a refused gate returns its unmet conditions instead of moving.
A decision step evaluates its conditions against real task fields and records what matched. A branch is a detour: the condition invokes a sub-workflow, which runs to completion with its own steps and gates and then returns. The trunk itself stays linear by design, so every run remains one auditable line.
On the return from an invoked sub-workflow, resume_at can point backward. That is the fix-loop primitive: review finds problems, the run re-enters the fix step, and the cycle repeats until the work passes the gate.
Yes, two ways. A step's instructions can tell your AI session to start several agents at once: ConvOps holds the step, your session does the fan-out. Or split the work into child tasks: children that share an order start together, each can target its own executor, and the parent's wait_for_children gate holds until all are done.
In the database, scoped to your workspace: steps, reusable fragments, and org-wide globals. You install starting points from the template catalog and edit them conversationally over MCP from your own client.
They survive. Edits are surgical and validated with a full dry run before they land, and live instances continue against the updated definition.
Routing. Templates declare what they apply to, by task type, vertical, tags, or project, and matching work attaches its workflow automatically at creation. Nobody wires anything per task.