# Processes

> The OPM language · https://spoletta.com/docs/processes

A process is something that happens: a step of the flow. Every process has a name and a **kind**, which says who or what carries it out. Its icon colour on the board tells the kinds apart.

| On the board | Carried out by | Typical use |
| --- | --- | --- |
|     | An AI coding agent in the worker, optionally in git checkouts of the flow’s repositories and with MCP servers. | Write, analyse and fix code; research; draft; decide; review. |
|     | A bash script in the worker, with curl and jq. | Call an API, run a build, transform JSON: the same way every time. |
|     | A person, in the Spoletta UI. | Approve or send back work; fill in what a run starts from. |
|     | Spoletta itself, calling Sentry’s issues API. | Fetch the issues a flow works through. |
|     | A board of processes of its own, zoomed into. | Group steps; run steps once per item of a list. |
|     | Another flow, a procedure, run as a run of its own. | Reuse a flow across jobs. |

Change a process's kind under **Type** in its settings: **Agent**, **Script**, **Human**, **Flow**, **Procedure** or **Sentry**. Links that no longer fit the new kind are dropped. A flow process is drawn with a double border, a procedure with a dashed one, as it runs a flow kept elsewhere.

## What a process does to objects

A process acts only through its links. It **takes** objects (input links, into the top of its card) and **yields** them (output links, from the bottom). What it takes, it is given as input; what it yields, it must hand back. The exact meaning of each link is on the next page, [Procedural links](https://spoletta.com/docs/procedural-links.md).

## Settings every process shares

| Setting | Applies to | Effect |
| --- | --- | --- |
| Needs (quorum) | every kind but human | Run once this many of its inputs exist and hold their conditions, rather than all of them. See [Branches](https://spoletta.com/docs/branches.md). |
| Timeout (s) | agent, script, Sentry | The step fails after this many seconds (1 to 86400). |
| Retries | agent, script, Sentry | How many more times a failed step is tried (0 to 5), each try a step of its own. |
| Rounds | agent reviewers | How often it may send work back before that fails it (1 to 20, default 3). See [Review loops](https://spoletta.com/docs/loops.md). |

Each kind has settings of its own (an agent's prompt and model, a script's code, a Sentry query): see [Scripts, Sentry and tools](https://spoletta.com/docs/tools.md).

OPL:

```text
Fix is an agent process, which an AI agent carries out.
Fetch ticket is a script process.
Approve is a human process, which a person carries out.
Each exception is a flow process, made of processes of its own.
Fetch is a Sentry process, which fetches issues.
Tell the team is a procedure, which runs the flow Announce change.
```
