Decision framework · Rote field guide

Not every agent should become a workflow

Replace an agent with a workflow when the procedure has stopped changing, runs often enough for repetition to cost real money, and needs properties an agent cannot give you: regression tests, explicit approvals, durable retries, or an audit trail. Keep the agent when the path genuinely varies per run, because that variability is exactly what you are paying it for.

Rote is an open-source CLI, Apache-2.0 licensed and published as rote-cli on PyPI, that compiles a proven AI agent skill into a typed, deterministic workflow. It moves fixed logic and tool orchestration into reviewable code, and calls a model only for the steps that genuinely require judgment.

Five questions that settle it

How much has the procedure changed in the last month? How many times does it run, and is that number growing? Does anyone need to review, test, or audit what it does? What happens when step seven fails halfway through, and is a clean retry required? And how many of its steps involve a real decision rather than a known action? Confident answers to these five usually make the call obvious without a spreadsheet.

Changing weekly + low volume → keep the agent
Stable + high volume → compile it
Stable + needs audit, tests, or approvals → compile it even at low volume
Unstable + high volume → stabilise it first; compiling a moving target wastes the work

The case for leaving it as an agent

Open-ended planning is a feature when inputs are unstructured, the path really does differ per run, and a human is in the loop to catch a bad call. Exploration, one-off analysis, and genuinely novel problems all belong in an agent. Converting these to workflows trades flexibility you need for determinism you do not, and you will spend the following month adding branches to recover what you gave up.

The case for compiling it

Once the same successful path repeats, the agent's planning is overhead you pay for on every run. Code can be reviewed, diffed, and regression-tested. A durable runtime can retry a failed external call without replaying the conversation. Approvals can pause explicitly rather than depending on a model choosing to ask. And the remaining model calls get cheaper to reason about because there are fewer of them and each has a typed boundary.

The middle path most teams actually want

This is rarely all-or-nothing. Most proven processes are mostly settled with a few genuinely ambiguous steps. Rote's five node kinds exist for that shape: pure functions and external calls for the settled parts, LLM judges and bounded agent loops for the parts that still need a model, and human approval gates where a person must sign off. The result is a workflow with a small, visible inference surface rather than an agent with an unbounded one.

How to make the transition safely

Keep the original skill; compilation produces a separate artifact rather than editing it. Run both implementations against the same set of real cases and compare outputs field by field, not just success rates. Expect the compiled version to surface ambiguities the agent was silently papering over. That is the process working, and it is cheaper to resolve them at review time than in production.

Direct answers

Frequently asked questions

When should I compile a skill?

Keep one-off exploration in an agent. Compile a skill after the procedure is proven, repeats often, and needs lower cost, faster execution, regression tests, explicit approvals, or reliable retries.

What is the difference between an AI agent and an AI workflow?

An agent chooses its next action at run time using a model. A workflow follows declared control flow, though individual steps may still call models. The practical difference is that a workflow's path can be read, reviewed, and tested before it runs, while an agent's path only exists after the fact.

Can an AI agent workflow be deterministic?

Parts of it can. Rote makes control flow explicit and moves pure functions and fixed API orchestration into testable code. Nodes intentionally kept as LLM judges or agent loops remain probabilistic. The goal is to minimize and expose the inference surface, not pretend every output is deterministic.

Compile a workflow

Inspect the open-source CLI or run a compilation in Rote Cloud.