Flows
Triggers
The three ways to start a LoCrew flow: the Run button, a schedule with missed-run handling, and a /run command typed in a channel or DM, with live run cards and results posted back.
Every flow has exactly one start step. Click it and choose How does this flow start?:
| Option | Start step | Run recorded as |
|---|---|---|
| When I press Run | Manual start | Started by: You |
| On a schedule | Schedule | Started by: Schedule |
| When /run is used in a conversation | Conversation command | Linked to that conversation. The Started by field currently shows Schedule for these runs, a known app bug. |
Whatever the start step, you can always start a flow with the editor's Run button.
#When I press Run
The flow starts when you press Run. Whatever you type in Input when starting it is the start step's output (text, shown as Run input in the value picker), so later steps can use it.
#On a schedule
| Field | Values |
|---|---|
| Repeat | Every day, Every week, Every few minutes or hours, or Once |
| On (weekly) | A day of the week |
| At (daily, weekly) | A 24-hour HH:MM time |
| Every (minutes) | At least 5, at most 10,080 (7 days) |
| On (once) | A date and time |
| If LoCrew was closed at a scheduled time | Skip the missed runs (default) or Run once when LoCrew opens |
| Schedule is on | On by default for a new schedule; off for templates |
Next run: previews the next time, or says the schedule is off or that the time has passed. Save the flow for changes to take effect. The flow's card then shows Next run …, or Schedule finished after a one-off.
How schedules behave:
- Schedules run only while LoCrew is open, in this computer's time zone. Nothing runs while the app is closed or the computer sleeps.
- LoCrew checks every 30 seconds, and once at startup.
- A run more than two minutes late counts as missed. With Skip the missed runs, LoCrew shows a notification, Skipped a missed run of "…". With Run once when LoCrew opens, one run covers all the missed times.
- If the previous run of the flow is still going: Skipped a scheduled run of "…" — The previous run is still in progress.
- If the flow cannot start (for example it has problems): Scheduled run of "…" did not start, with the reason. The schedule is kept.
- Daylight saving: a time that does not exist (spring forward) runs at the first moment that does, so 02:30 becomes 03:30; a time that happens twice (fall back) runs once.
- A scheduled run has no input.
#When /run is used in a conversation
Anyone in an allowed channel or DM can start the flow by typing a command. Its progress appears there as a live card, and the result is posted back. Only you can run it this way: messages from agents or other flows never do.
| Field | Notes |
|---|---|
| Command | /run alias. 2 to 40 lower-case letters, digits or -, starting with a letter or digit. Must be unique: /run … is already used by "…". Choose another command. |
| Description | Shown when picking a command. |
| Input hint | What to type after the command, for example what to review. |
| Require input after the command | Off by default. |
| Allowed in | Every channel and DM, or Only the ones I choose. |
| Post this step's output as the result | Automatic (the last step that produced output) or a step you choose. |
| Command is on | On by default. |
#Running a flow from chat
- In a channel or DM, type
/. The composer offers /run. - Pick a flow from the list, or keep typing its alias.
- Type the input after the alias, then press Enter:
/run review src/auth/session.tsThe command message is saved like any message but wakes no agent; the flow decides who works. A message with images is never treated as a command.
#The run card
A card titled with the flow's name appears in the conversation and updates live:
- a progress bar with one segment per step, and N of M steps completed · now: …
- buttons Review approval (when it waits for you; approvals are decided in Runs), Inspect run, View flow and Cancel.
When the run ends, the flow posts its result:
- Completed: the chosen result step's output, cut at 3,000 characters with a note that the full output is in the run details.
- Failed: the step that failed and why.
- Rejected or Cancelled: a short note.
Agents in the conversation later see these posts labelled as automated, untrusted output.
#When /run is refused
LoCrew answers with a note in the conversation:
| Note | Meaning |
|---|---|
Which flow? Type /run <command>. Available here: … | No alias was given. |
No flow uses /run …. | The alias is unknown. |
/run … matches more than one flow (…). Give each a different command. | Two flows share it. |
| "…" is turned off for conversations. Turn its command on in the flow's start step. | Command is on is off. |
| "…" cannot be run from this conversation. | Not in Allowed in. |
/run … needs input: … | Require input after the command is on. |
| "…" cannot run yet: … | The flow has problems. |
#What the flow receives
A run started by /run gets the text after the alias as text, and also as json.prompt (Text typed after the command).
Warning
A run started with the editor's Run button has text but no json.prompt. A step that uses {{start.json.prompt}} then fails with No value for {{start.json.prompt}}: that step did not run or did not produce it. Start such flows with /run, or use {{start.text}}, which both kinds of run provide.