Configure concurrent execution
Control what happens when a signal fires again before a run finishes.
AlphaWhat concurrency protects
Concurrency controls what happens when a signal tries to start another run while related work is still active. Configure it whenever overlapping runs could:
- show two videos in the same OBS area;
- speak several TTS messages simultaneously;
- update the same variable or file in an unsafe order;
- cancel or hide a source still used by another run;
- make too many external API requests.
Configure one automation
- Select the automation.
- Open its runtime or Concurrency settings.
- Select a mode.
- Configure the fields used by that mode.
- Add a Key Selector when events need independent lanes.
- Configure global or per-user cooldown where required.
- Test by starting the signal several times before its sequence finishes.
Choose a mode
| Mode | Behavior | Practical example |
|---|---|---|
| Queue | Runs accepted events in arrival order | Play every paid reward video without overlap |
| Parallel | Starts several runs up to the configured limit | Fetch independent information for different viewers |
| Cancel Previous | Cancels related active work and starts the newest run | Replace a now-playing card with the latest track |
| Debounce | Waits for a quiet interval and keeps the latest request | Apply only the final value from rapid slider updates |
| Cooldown | Suppresses related calls during a restricted interval | Prevent a chat sound command from being spammed |
Configure Queue
Set Maximum Queue Length to limit waiting work. When the limit is reached:
- Drop Oldest removes the oldest waiting request;
- Drop Newest rejects the incoming request.
Choose carefully for paid or viewer-owned events. Removing an automation call does not automatically refund Channel Points, donations, or another external purchase.
Use a Key Selector
A Key Selector divides concurrency into separate lanes.
For a separate queue or cooldown per viewer:
{event.user.id}
For a separate lane per reward or controlled destination, use the stable ID exposed by that signal. Different keys can run independently; events that resolve to the same key coordinate with one another.
Test missing values. If the selector cannot resolve, unrelated events may fall into the same lane or behave differently from the intended grouping.
Understand individual steps
An individual step does not have its own concurrency queue. A run remains active while a step is executing, including during:
- Pause;
- an AI request;
- Piper speech in a blocking completion mode;
- a called macro;
- an OBS or external service request.
The automation's concurrency settings decide what new signal calls do during that time.
Step settings solve different problems:
- Step Condition decides whether the step runs;
- Timeout limits how long the step may execute;
- On Error decides how its failure affects the sequence.
Coordinate several automations with a folder
Per-automation Queue prevents overlapping calls to the same signal, but different automations still run independently.
For example, Reward 1, Reward 2, and Reward 3 can each have a correct queue while their three OBS videos still overlap. To coordinate them:
- Put the related automations in one folder.
- Open the folder's context menu.
- Select Folder Settings.
- Enable Folder Concurrency.
- Select
Queue. - Configure its queue length and overflow behavior.
The folder now admits one related automation at a time:
Reward 1 → complete
Reward 2 → complete
Reward 3 → complete
Keep unrelated background work outside the folder. A chat logger or counter should not wait behind a long OBS animation merely because it is stored nearby.
Real usage patterns
TTS queue
Use Queue so messages are spoken in order. Put all automations that share the same voice output in one folder when several signals can call TTS.
Search overlay
Use Cancel Previous when the newest search result should immediately replace the previous overlay. Make the new run set the complete OBS state because cleanup in the cancelled run may not execute.
Per-user chat command
Use Cooldown with a user-based key so one viewer cannot spam the command while other viewers retain independent access.
Independent API work
Use Parallel only when requests and their output destinations do not share mutable state. Limit maximum parallel runs to protect the provider and local resources.
Verify
- Add a Pause long enough to observe overlapping calls.
- Trigger the same automation several times.
- Confirm the selected mode's behavior in Logs.
- Trigger calls with the same and different Key Selector values.
- For folder concurrency, alternate rapidly between two different automations.
- Confirm that queue overflow follows the configured policy.