workflow engine: Teach it once. Every run follows it.

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

Claudeconnected to ConvOps

new chat

Bug fixlistening
changes requestedReproduce itWrite the fixReviewsub-workflowYour OKapprovalShip it

example

in short

What is a workflow engine for AI agents?

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.

key facts · october 2026

  • In ConvOps, a workflow is a sequence of typed steps with instructions, conditions and gates, stored in your workspace and edited in one place.
  • Your AI client asks for the current step over MCP, does the work, then asks to advance. The engine checks the step's gate against real state before the cursor moves.
  • A decision step reads the task's fields and picks a path. One path can invoke a whole sub-workflow, nested up to five levels deep; the parent waits, then continues.
  • New tasks are routed to the workflow that owns them by type, vertical, tags, project or a plain-language match.
  • There is no visual canvas and no pipeline language. You describe the process in plain words from the AI client you already use.
  • At Neomanex, a 14 phase plan ran in 7 stages: phases sharing an order ran together as child tasks (October 2026).

best for

  • Processes that drift when they live in a long prompt or instruction file.
  • Teams that want the same steps, checks and approvals on every run, whoever starts it.
  • Agents in Claude Code, Codex, Cursor or ChatGPT that need to follow a process across sessions.

not for

  • Durable execution of application code with retries and timers. Use Temporal for that.
  • Running several steps of one workflow at the same time. Steps run in order; parallel work is child tasks.
  • Designing workflows on a visual canvas.

updated

the problem

A process kept in a prompt drifts.

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.

try it

Build a workflow. Watch it run.

Pick what your process needs. The workflow re-lays itself, then a run goes through it and stops where you said it should.

ConvOps · your workflowready
new taskPlanBuildReview?Reviewsub-workflowShip
in plain words · example
  • Plan it, build it, ship it.
  • Send it to review. If changes are requested, go back to the build.
compiled
4steps
0approval
1loop
0sub-tasks
one run, start to end
one step at a time

The AI sees only the next step.

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.

workflow · Bug fixengine holds the cursor
  1. 01Reproducecursor
  2. 02Failing test
  3. 03Fix
  4. 04Review
  5. 05Approve
  6. 06Release
  7. 07Verify
Claude · what the AI is holdingstep 1 of 7
in context now
step · reproduce

Reproduce

Recall what the team knows about checkout. Reproduce the crash in Safari and note the exact steps.

not in context
6 other steps stay with the engine
17 words in context · the whole process is 87
example
routing

Work finds its own workflow.

Teach each workflow what it applies to. From then on, new work attaches to the right one when it is created.

new task
type: bugCheckout crashes on Safari
matched by type, tags, project · nobody picks
Bug fix0 attached
applies to · type: bug
Article publishing0 attached
applies to · type: task · tag: article
Feature delivery0 attached
applies to · type: feature
watch it work

Same work. Same way. Every time.

Two bugs, two people, two AI tools, three days apart. Both runs go through the same steps.

01routing

A bug arrives. Its workflow attaches.

Monday. Checkout crashes on Safari. The task is a bug, so the bug-fix workflow attaches on its own. Nobody picks it.

ConvOps · Bug fix · runs1 run
Monday · ClaudeCheckout crashes on SafariBug fix attached
Thursday · CodexWebhook returns 500
Claudemonday
Checkout crashes on Safari. Can you fix it?
task created · type: bug · Bug fix attached
02Claude

One step at a time.

Claude asks for the current step and gets only that: reproduce the crash. It does the work, then asks to move on.

ConvOps · Bug fix · runs1 run
Monday · ClaudeCheckout crashes on SafariBug fix attached
Thursday · CodexWebhook returns 500
Claude received · step 1 of 6ReproduceReproduce the crash in Safari and note the exact steps. Then ask to advance.the other five steps are not in the chat
03review sub-workflow

A detour, then a loop back.

The review detour runs its own steps. Changes requested, so the run returns to the fix, and comes back when the work passes.

ConvOps · Bug fix · runs1 run
Monday · ClaudeCheckout crashes on SafariBug fix attached
Thursday · CodexWebhook returns 500
review sub-workflow · returnedChanges requestedThe fix misses the iPad case. The run goes back to Fix, then through review again.loop 1 · back to Fix
04you approve

Nothing ships before you say go.

The run stops at the approval. Until a person approves, the engine does not move the cursor.

ConvOps · Bug fix · runs1 run
Monday · ClaudeCheckout crashes on SafariBug fix attached
Thursday · CodexWebhook returns 500
waiting for youShip the Safari fix?
Not yetApprove
05a teammate, in Codex

Thursday. Another bug, another AI.

A teammate picks up a different bug in Codex. The same workflow attaches. Same steps, same detour, same approval.

ConvOps · Bug fix · runs2 runs
Monday · ClaudeCheckout crashes on SafariBug fix attached
Thursday · CodexWebhook returns 500Bug fix attached
Codexthursday
The payment webhook returns 500. Take it.
task created · type: bug · Bug fix attached
step 1 of 6 · Reproduce
06done

Two runs. One way.

Different people, different AI tools, different days. The work went through the same steps, and every step is recorded on its task.

ConvOps · Bug fix · runs2 runs
Monday · ClaudeCheckout crashes on SafariBug fix attached
Thursday · CodexWebhook returns 500Bug fix attached
Monday · ClaudeCheckout crashes on Safari6 steps · 1 loop · approved · done
Thursday · CodexWebhook returns 5006 steps · 1 loop · approved · done
ConvOps · Bug fix · runs1 run
Monday · ClaudeCheckout crashes on SafariBug fix attached
Thursday · CodexWebhook returns 500
Claudemonday
Checkout crashes on Safari. Can you fix it?
task created · type: bug · Bug fix attached
approvals

Approve every step. Then let go.

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.

reproduceClaude
fixClaude
reviewdetour
approveapproval
releaseClaude
verifydone
the shapes

Five shapes cover most processes.

Steps

Each step carries its own instructions, handed over only when the work reaches it.

one at a time

Approvals

A gate the engine checks on every move. Not met, the run does not go forward.

it refuses

Detours

A decision can send the work through a whole sub-workflow. It always comes back.

loops included

Parallel

Child tasks that share an order start together. The parent waits for all of them.

start together

Routing

New work is matched to the workflow that owns it, by type, tags or project.

nobody wires it

the difference

A long prompt vs a compiled process.

bugfix-prompt-v7-final (2).md4 copies

IMPORTANT: always ask before releasing.

IMPORTANT: always ask before releasing.

a sentence, not a gatethe whole process, every message

  • The entire process arrives at once, up front
  • Instructions go stale silently, per copy
  • The model juggles every constraint at all times
  • Checkpoints are wording a model can talk past
  • The process lives in whoever wrote the prompt

Routing

A template declares what it applies to: task type, vertical, tags or project. Matching work attaches the workflow at creation.

payload
{
  "applies_to": [{
    "type": "bug",
    "vertical": "development",
    "default": true
  }]
}
Three tasks arrive. Only one belongs here.

Steps

Your client calls workflow_advance over MCP and receives the current step only. Edit a step once and future runs inherit it.

payload
{
  "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."
}
Step 2 of 7. The other six stay out of context.

Gates

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.

payload
{
  "current_step": "approve",
  "unmet_conditions": [
    "Requires explicit user approval"
  ]
}
A refused gate, verbatim.

Decisions and loops

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.

payload
{
  "decision": true,
  "conditions": [
    { "id": "simple",
      "when": { "task_field": "complexity",
                "equals": "S" } },
    { "id": "unclear",
      "invoke": "deep-research" },
    { "id": "go", "when": "default" }
  ]
}
Same task, same rules, every single run.

Parallel work

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.

payload
{
  "children": [
    { "title": "fix", "order": 1 },
    { "title": "tests", "order": 1,
      "executor": "your-runner" },
    { "title": "docs", "order": 1 }
  ],
  "parent_gate": { "wait_for_children": true }
}
The intelligence is replaceable. The process is not.

Authoring

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.

questions

Workflow engine questions, answered.

Is this a prompt library?

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.

Can a decision branch the flow?

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.

How do loops work?

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.

Can steps run in parallel?

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.

Where do workflows live?

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.

What happens to runs already in flight when I edit a template?

They survive. Edits are surgical and validated with a full dry run before they land, and live instances continue against the updated definition.

How does a new task get its workflow?

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.