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:
| Setting | Options |
|---|---|
gridColumns | typically 4 (max ~8) |
gridRows | typically 4 |
buttonSize | small / medium / large |
colorTheme | brand 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 actionsEXECUTE— recipients can fire any action (as the share creator's identity)
visibility:
SIGNED_LINK— requires the token in the URLPUBLIC— anyone with the URLRESTRICTED— 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.