glossary · Running it

Unattended execution

definition

Unattended execution is the mode where a scheduled or triggered run executes with nobody at the keyboard: a dispatcher hands the work to an execution backend, and humans participate only at gates.

in one line: Nobody at the keyboard. People join only at gates.

in context

Where does unattended execution fit?

Same workflow. Nobody driving. A schedule fires, the work goes to a runner, and people step in only at gates.

schedule fires
dispatchto a runner
the steps runno one watching
sign-offapproval
receiptsession, cost
two ways to say it

What is unattended execution, in plain words?

Same idea at two depths: the plain version, then what the engine actually does.

It is not a second process. It is the same workflow with the person out of the driving seat.

Each run leaves a receipt: what ran, how many retries, what it cost.

for engineers

tasks_dispatch hands a task to an executor: an isolated run on Kubernetes, your own OpenCode server, or your own runner, which receives the envelope.

Dispatch is written in the same transaction as the task, and a reaper cleans up runs that die. Each run records session, retries and cost in USD.

the longer answer

Why does unattended execution matter?

Unattended is not a different kind of process; it is the same workflow with the human removed from the driving seat. That framing matters because it determines what you must build: not a second system, but a dispatch path (who runs the agent), a selection mechanism (what it works on), and reliability plumbing (what happens when the backend is down).

The reliability part is where naive implementations fail quietly. Dispatch must survive crashes between systems (written transactionally, redelivered idempotently), and a run that dies must be reaped rather than leak.

Judged well, unattended execution is measured in receipts: each run should record its session, its retries, and its cost, so autonomy shows up as a line item you can read rather than a bill you discover.

There is also the question of what a run does when it needs a person. A run with nobody watching cannot ask in the chat. The robust answer is that the process itself contains the stopping points: the run reaches a gate, that piece of work waits there, and a person answers when they can, while other work keeps moving. Without that, the run either guesses or stops for good.

in convops

How does unattended execution work in ConvOps?

In ConvOps, unattended runs start from a schedule or from dispatching a task to an executor: an isolated run with one Kubernetes pod per run, your own OpenCode server, or your own runner that receives the dispatch envelope. A schedule can spawn a new task on each fire or resume the same task at its current step. Stalled runs are re-dispatched automatically, and each run records its session, retries, tokens and cost. A run that hits its time limit resumes on the same volume. For a hands-on setup, see how to run Claude Code unattended on Kubernetes.

questions

What do people ask about unattended execution?

How do AI agents run unattended?

A trigger, such as a schedule or a dispatch, starts an agent in non-interactive mode on a runner. To run well it needs a process to follow, a way to wait for a person when one is needed, and a record kept outside the run.

What happens when an unattended run needs a human?

In ConvOps the run reaches a gate or marks its task blocked, and that piece of work waits while other work keeps moving. A person answers when they can, from any client, and the run continues from the same step.

How do you keep the cost of unattended runs visible?

Record it per run and cap it per run. In ConvOps each run records its session, retries, tokens and cost. In Claude Code print mode, the --max-budget-usd and --max-turns flags stop a single run at a ceiling you set.