Streaming Hub 0.1

Configure concurrent execution

Control what happens when a signal fires again before a run finishes.

Alpha
IntermediateUpdated 2026-07-27

What 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

  1. Select the automation.
  2. Open its runtime or Concurrency settings.
  3. Select a mode.
  4. Configure the fields used by that mode.
  5. Add a Key Selector when events need independent lanes.
  6. Configure global or per-user cooldown where required.
  7. Test by starting the signal several times before its sequence finishes.

Choose a mode

ModeBehaviorPractical example
QueueRuns accepted events in arrival orderPlay every paid reward video without overlap
ParallelStarts several runs up to the configured limitFetch independent information for different viewers
Cancel PreviousCancels related active work and starts the newest runReplace a now-playing card with the latest track
DebounceWaits for a quiet interval and keeps the latest requestApply only the final value from rapid slider updates
CooldownSuppresses related calls during a restricted intervalPrevent 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:

  1. Put the related automations in one folder.
  2. Open the folder's context menu.
  3. Select Folder Settings.
  4. Enable Folder Concurrency.
  5. Select Queue.
  6. 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

  1. Add a Pause long enough to observe overlapping calls.
  2. Trigger the same automation several times.
  3. Confirm the selected mode's behavior in Logs.
  4. Trigger calls with the same and different Key Selector values.
  5. For folder concurrency, alternate rapidly between two different automations.
  6. Confirm that queue overflow follows the configured policy.

Related