Streaming Hub 0.1

Build an interactive UI Choice on Stream Deck

Display choices on Stream Deck buttons, wait for a response or continue the automation, process selections, manage per-zone queues and dismiss pending choices.

Alpha
IntermediateStream DeckUpdated 2026-07-26

Result

Streaming Hub can temporarily turn a group of Stream Deck buttons into an interactive choice. For example, an automation can ask an operator to:

  • approve or reject a donation;
  • select the winner of a prediction;
  • choose an OBS scene;
  • confirm a potentially disruptive action.

The Choice Create action displays the available choices. A choice can pause the current automation until the operator responds, or it can let the automation continue and report the answer through the UI Choice Selected signal.

Before you start

You need:

  • the Stream Deck bridge enabled in Streaming Hub;
  • connector version 0.5.0 or later installed in the controller application;
  • the bridge URL and token configured in the connector;
  • enough controller buttons for the choices you want to display.

For installation and bridge setup, follow Stop or mute Piper TTS from Stream Deck.

Step 1. Create a UI Zone

Open the Stream Deck plugin project settings in Streaming Hub and add or verify a UI Zone. The default zone is:

FieldValue
IDmod
DescriptionModeration choices
Start Index0
Button Count4

A UI Zone is a logical group of buttons. Each zone has its own active choice and its own queue. Different zones can display choices at the same time without blocking one another.

Step 2. Add UI Choice buttons to the controller

In the Elgato Stream Deck or StreamDock application, add the Streaming Hub UI Choice action to every button that belongs to the zone.

Configure the buttons as follows:

ButtonUI ZoneButton Index
Firstmod0
Secondmod1
Thirdmod2
Fourthmod3

Every button in the group uses the same UI Zone and a unique Button Index.

The displayed title and image are controlled by Streaming Hub while a choice is active. When the zone queue becomes empty, the connector restores the buttons to their normal appearance.

Step 3. Create the choices

Add StreamDeck → UI Choice → Choice Create to an automation.

Configure:

FieldExamplePurpose
Prompt IDdonation_moderationStable identifier used by UI Choice Selected and targeted dismiss actions
UI ZonemodButton group on which the choices appear
Execution ModeWait for responseWhether this automation pauses
TimeoutAfter N secondsWhether the visible choice expires
Timeout Seconds15Response window after the choice becomes visible

Add at least one item to Choices. Each item has:

  • ID — the machine-readable result, such as approve;
  • Title — text displayed on the Stream Deck button;
  • optional visual fields such as Kind or Image.

Choices are assigned to registered buttons in ascending Button Index order.

For an approval prompt:

Button IndexChoice IDTitle
0approveApprove
1rejectReject

Use the Choice ID in conditions and signals. The displayed Title can change without breaking the automation.

Execution modes

Wait for response

The current automation pauses until the operator selects a choice, the response window expires, or another action dismisses the request.

The result is written to runtime values including:

  • runtime.prompt.result;
  • runtime.prompt.status;
  • runtime.prompt.timedOut;
  • runtime.prompt.<PromptId>.result;
  • runtime.prompt.<PromptId>.status.

Possible status values are:

  • Selected;
  • TimedOut;
  • Dismissed;
  • Cancelled.

When a timeout is enabled, Default Choice ID determines the result returned on timeout. If it is empty, the first configured choice is used.

Continue immediately

The choice is placed in the zone queue and the current automation continues immediately. Handle the eventual operator response with a separate automation that uses UI Choice Selected.

Use this mode when the original workflow must not stop while a human decision is pending.

Step 4. Handle a non-blocking selection

Create another automation and select the StreamDeck UI Choice Selected signal.

Set:

FieldExample
Prompt IDdonation_moderation
Choiceapprove

Prompt ID matches the Prompt ID from Choice Create. Choice matches the selected Choice ID. Both filters are optional, but using both identifies one semantic answer precisely. Create another automation for reject, or leave Choice empty when every choice should start the same workflow.

Do not identify an answer only by physical button position. The same mod:0 button can display approve for one Prompt ID and a completely different choice for another.

Queue behavior

Each UI Zone has one visible request and a separate pending queue.

When Choice Create runs for an occupied zone:

  1. the visible request remains on the buttons;
  2. the new request enters the zone queue;
  3. after selection, timeout or dismiss, the next request is displayed automatically;
  4. button defaults are restored only when the queue becomes empty.

Queues in different UI Zones run independently.

Priority

Expand Advanced Settings in Choice Create to set Priority.

Lower numbers are processed first:

PriorityMeaning
0Highest
1High
2Medium
3Default
4 and aboveProgressively lower

Negative numbers are treated as 0. Priority changes the order of pending requests only. It never interrupts the request already visible to the operator. Requests with the same priority use creation order.

Dismiss a UI Choice

Use Choice Dismiss when a request is no longer relevant.

Select a UI Zone and one Scope:

Current choice

Dismisses the visible request. The next queued request appears automatically. If the queue is empty, the buttons return to their defaults.

Entire zone

Dismisses the visible request, removes every pending request in the zone and restores the buttons.

By Prompt ID

Enter a Prompt ID and choose:

  • Latest in queue — remove the most recently created matching request; if only the visible request matches, dismiss it;
  • All with this Prompt ID — remove the visible and pending requests with that Prompt ID.

Requests with other Prompt IDs remain in the queue.

An automation waiting for a dismissed request resumes with status Dismissed.

Timeout and completion

When the response window expires:

  • Wait for response resumes with status TimedOut and its default choice;
  • Continue immediately closes without generating a false user selection;
  • the next queued request becomes visible;
  • the buttons are restored if no request remains.

UI Choice Selected is emitted only for a real button selection. Timeout and dismiss are completion states, not simulated operator choices.

Recommended patterns

Blocking confirmation

Use:

  • Execution Mode: Wait for response;
  • Timeout: After N seconds;
  • a safe Default Choice ID, such as reject.

Continue the same automation based on runtime.prompt.result.

Background operator decision

Use:

  • Execution Mode: Continue immediately;
  • a stable Prompt ID;
  • a finite response timeout;
  • one or more UI Choice Selected automations.

Long-lived control

Use Continue immediately with No timeout, and add a Choice Dismiss action to the workflow that makes the request obsolete. A no-timeout request blocks later requests in the same zone until it is selected or dismissed.

Troubleshooting

  • The buttons never change: verify that the connector is version 0.5.0 or later, the bridge is connected, and the UI Zone matches on both sides.
  • A choice appears on the wrong button: check for duplicate or incorrect Button Index values.
  • UI Choice Selected does not run: match the exact Prompt ID and Choice ID, including spelling.
  • A new choice does not appear immediately: another request is active in the same zone; check its timeout or dismiss it.
  • A waiting automation never continues: make sure the active request can be selected, timed out or dismissed.
  • Buttons keep old content: use Choice Dismiss with Entire zone, then verify that the current connector package is installed.

Related documentation