Skip to main content

VibeDecks

A VibeDeck is a configurable grid of action buttons — like an Elgato Stream Deck for your dev workflow. Each button runs a command, script, or webhook on a target agent. See the concept.

VibeDecks are NOT bundles of vibes — they're action dashboards.

What you'll learn

  • Create a VibeDeck
  • Add buttons
  • Share the deck

Create a deck

vibecontrols vibedeck create \
--name "Dev Commands" \
--grid-columns 4 \
--grid-rows 4 \
--button-size medium \
--color-theme blue

Or from the web app: VibeDecks → New Deck. You pick:

SettingOptions
gridColumnstypically 4 (max ~8)
gridRowstypically 4
buttonSizesmall / medium / large
colorThemebrand color

Add buttons

Each button has a row, column, optional rowSpan/colSpan (for larger tiles), label, icon, color, and an actionType of COMMAND, SCRIPT, or WEBHOOK.

vibecontrols vibedeck add-button <deck-id> \
--row 0 --column 0 \
--label "Build" --icon hammer --color blue \
--action-type COMMAND \
--command "bun run build" \
--target-agent <agent-id>

vibecontrols vibedeck add-button <deck-id> \
--row 0 --column 1 \
--label "Deploy" --icon rocket --color red \
--action-type SCRIPT \
--script /home/me/scripts/deploy.sh \
--target-agent <agent-id> \
--confirmation-required true

vibecontrols vibedeck add-button <deck-id> \
--row 0 --column 2 \
--label "Slack ping" --icon bell \
--action-type WEBHOOK \
--webhook-url https://hooks.slack.com/services/...

Action types map to the VibeDeckButtonActionType enum: COMMAND, SCRIPT, WEBHOOK.

Confirmation

Setting confirmationRequired: true on a button shows a "Are you sure?" prompt before execution — useful for destructive actions.

Share a VibeDeck

Generate a token-based share link:

vibecontrols vibedeck share <deck-id> \
--permission EXECUTE \
--visibility SIGNED_LINK \
--expires-in 7d

permission:

  • VIEW — recipients see the layout, can't fire actions
  • EXECUTE — recipients can fire any action (as the share creator's identity)

visibility:

  • SIGNED_LINK — requires the token in the URL
  • PUBLIC — anyone with the URL
  • RESTRICTED — additional email allowlist

Backed by VibeDeckShareLink in the schema. status is ACTIVE until expiry or revocation.

Multiple decks

Each user can have multiple decks. Mark one as isDefault: true — it loads first when you open the VibeDecks view.

Next steps