Flows
Steps
Reference for every LoCrew flow step: Agent, HTTP request, Send message, Condition, Human approval and Join branches, with every field, default, exit and what the step outputs.
Every step has a Name (up to 120 characters) and, apart from the start step, a Type of step. Start steps are covered in Triggers.
#Agent
One of your agents carries out a task.
| Field | Default | Notes |
|---|---|---|
| Agent | Any of your agents. The panel shows its runtime and access level. Flows never change an agent's permissions. | |
| Task | What this agent should do in this step. Up to 20,000 characters. Required. | |
| Give it the output of | Tick earlier steps whose output it should receive, up to 16. Only ticked steps are passed on, marked as data it must not take orders from. | |
| Reply format | Text | Text or JSON. JSON lets later steps use individual fields. |
| Fields in the reply | JSON only. Up to 32 named fields, each with a type (string, number, boolean, list, object) and a description. What the agent is asked to reply shows the exact instructions. | |
| Time limit (minutes) | Agent's own | 1 to 360. The agent's own limit and the global limit always apply too. |
| Attempts | 1 (no retry) | Up to 5. Retries happen only after a reported failure or a timeout, never after an unknown outcome. |
| First retry after (seconds) | 2 | Doubles each time, up to a minute. |
What the agent receives: a prompt naming the flow and step, the flow-wide instructions if any, its task, any reviewer feedback if work was sent back, and each ticked input between markers that tell it to treat the content as untrusted data. Inputs over 40,000 characters are cut.
Output: text (the full reply). With JSON, json.field for each declared field.
Failure cases: a JSON reply that misses a declared field or has the wrong type fails the attempt: The reply did not match the fields this step asks for: … It is retried if you allowed attempts, and the reply is kept for inspection. A deleted agent, a budget refusal or a lost runtime login are never retried.
The run's private conversation has agent-to-agent hand-offs turned off, so an agent in a flow cannot wake other agents.
#HTTP request
Sends one request from this computer. Fully documented in HTTP requests.
Output: json.values.name for each kept value, json.status, json.ok, json.body, and text (the response as text).
#Send message
Posts a message as the flow to a channel or DM. It is shown as the flow, never as you or an agent, and it does not wake anyone: @names in it are plain text.
| Field | Notes |
|---|---|
| Post to | A channel or DM. |
| Message | Markdown with {{step.path}} values. Up to 8,000 characters; longer messages are cut with a note. |
If the step runs again (a retry or a resumed run), the message is not posted twice. One step posts to one fixed destination.
Output: json.messageId and json.conversationName.
#Condition
Chooses the Yes or No exit by checking earlier output. It never follows instructions written in that output.
| Field | Notes |
|---|---|
| Take “Yes” when | every rule holds (default) or any rule holds. |
| Rules (up to 16) | Each reads one earlier step: its reply (text) or a JSON field (for example verdict or items.0.score), then a Comparison and, where needed, a Value. |
| Comparison | Holds when |
|---|---|
| is / is not | The value equals (or does not equal) yours, compared as trimmed text. A missing value "is not" anything. |
| contains | Text contains yours (case-sensitive), or a list has an item equal to yours. |
| is greater than / is less than | Both sides are numbers. |
| exists | The value is present. |
| is empty | Missing, blank text, an empty list or an empty object. |
| is true / is false | A boolean, or the text true / false. |
Field paths can go up to 8 levels deep and use names and list positions only.
Output: json.result (true or false). The path not taken is skipped.
#Human approval
The flow pauses here until you approve or reject in Runs. It keeps waiting if LoCrew restarts. Approving a step never approves file changes: agents still ask for those.
| Field | Default | Notes |
|---|---|---|
| What are you approving? | Review before continuing | Up to 200 characters. |
| Notes for the reviewer | Up to 4,000 characters. | |
| Show the output of | Earlier steps shown to you while you decide. |
Exits: Approved and Rejected. If you reject and nothing is connected to Rejected, the run ends Rejected. Connect Rejected back to an earlier step to send the work back.
Output: json.decision (approved or rejected) and json.feedback (your optional feedback).
How to decide: Approving a run.
#Join branches
Waits for every incoming branch to finish.
| When a branch fails | Effect |
|---|---|
| Stop the flow (default) | If any branch fails, the run fails with that step's error ("…" failed: …). |
| Continue with the branches that succeeded | The flow carries on with what succeeded. |
If every branch was skipped, the join is skipped. A join needs at least two incoming branches.
Output: text, each completed branch under a heading with its name.
#Limits for a whole flow
| Limit | Value |
|---|---|
| Steps per flow | 500 |
| Connections per flow | 2,000 |
| Inputs per step | 16 |
| Agent steps per run, retries included | 200 |
| HTTP requests per run, retries included | 200 |
| Steps running at once | 2, or Max agents working at once if lower |
| Times one arrow may send work back per run | 10 |