VibeDeck Start free trial

18 actions · $5/mo · 7-day free trial

Put six coding agents on your Stream Deck.

Built deepest for Claude Code and Codex, with live support for Cursor, Copilot CLI, Antigravity, and OpenCode. See who needs you, control supported sessions, or dictate a prompt, then tap only when you are ready to run it.

7-day free trial, then $5/month · every current action included · macOS and Windows · Stream Deck hardware required

A short demo rendered from VibeDeck's real key states.

Six coding agents

One combined inbox or separate keys.

Selected-session control

Tap once. The rest of the deck follows.

$5/mo

7-day free trial. Cancel anytime.

One plugin. A complete agent-control deck.

Select a session from its live card, then use the rest of your keys and Stream Deck+ dials to control that target.

1
Tap a sessionChoose the Claude Code, Codex, Cursor, Copilot CLI, Antigravity, or OpenCode session you want.
2
See the white ringThe card stays selected after a completed turn until you choose another session.
3
Control the targetUse effort, model, presets, or your own command without rebuilding the key each time.
All Sessions action

Sessions

Use one prioritized inbox or one key per agent. Tap to select and focus; hold a completed card to dismiss it.

Approve or Deny action

Approve / Deny

Make Allow, Always allow, and Deny discoverable on separate keys for supported agent prompts.

Reasoning Effort action

Reasoning Effort

Cycle Claude Code effort from a key or Stream Deck+ dial. With Codex, open its combined model/reasoning picker.

Model action

Model

Carousel through Claude models and see the current choice live. With Codex, open its native picker.

Agent Config preset action

Agent Config

Apply a saved effort/model preset directly to Claude Code. With Codex, open its native picker once.

Custom Command action

Custom Command

Send your own text—such as /compact—while keeping your chosen Stream Deck title and icon.

Push Dictation action

Push Dictation

Hold a session key to speak. Preview the transcript—or an English translation—in the terminal, then tap to run it.

Usage action

Usage

See Claude Code 5-hour, weekly, or Fable usage and Codex weekly usage without another dashboard.

Sounds action

Sounds

Choose global approval, question, and error alerts—or mute every VibeDeck alert instantly.

Talk to your terminal. Keep the final say.

Dictation is opt-in and off by default. Hold a session key while you speak; VibeDeck sends the audio to the Whisper-compatible endpoint you choose and types the result into that session without pressing Enter.

Your OpenAI keyOpenAI API usage is billed separately by OpenAI and is not included in your VibeDeck subscription. Local WhisperRun your own compatible local server and leave the API key empty to avoid OpenAI API charges.

Your terminal is the preview: edit the text, dictate another segment, or discard it. Nothing runs until you tap the same session key or Push Dictation. Translation support depends on the configured endpoint. Dictation works on macOS and Windows where supported terminal text injection is available.

  1. 01Hold + speakThe microphone is live only while the session key is held.
  2. 02Transcribe or translateChoose speech-to-text or English translation in Push Dictation settings.
  3. 03Review in terminalThe text appears on the input line without Enter.
  4. 04Tap to runYou decide when the terminal submits it.

Best with Claude Code and Codex. Useful across your stack.

Claude Code and Codex get the deepest effort, model, usage, and selected-session controls. Cursor, Copilot CLI, Antigravity, and OpenCode still get live session visibility plus the approvals, commands, signals, and dictation their integrations and terminals support.

What works with what✓ supported · limited = agent or terminal constraint · — not available
FeatureClaude CodeCodexCursorCopilot CLIAntigravityOpenCode
Status cards + sounds✓ limited events✓ limited events✓ statusline
Approve / DenyTerminal onlyShell + MCPNative app
Tap to focus✓ terminal-dependent✓ terminal-dependentApp focus✓ terminal-dependentApp/terminal✓ terminal-dependent
Hold to interruptiTerm2iTerm2iTerm2iTerm2iTerm2iTerm2
Effort key + dialDirect + live readbackOpens picker; no dial step
Model key + dialDirect carouselOpens picker
Agent ConfigEffort + modelOpens picker
Custom Command✓*✓*✓*✓*✓*✓*
Push Dictation✓*✓*✓*✓*✓*✓*
Usage5h + week + FableWeekly
Dead-session resumemacOS

*Custom Command and Push Dictation require supported terminal text injection on macOS or Windows. Claude Code has the most direct controls. Codex exposes deep control through its native picker. Cursor, Copilot CLI, Antigravity, and OpenCode lifecycle and approval support vary with the events each integration exposes. Completed sessions accept controls and commands; error sessions do not.

Three steps. Preview before you install.

  1. 1

    Install VibeDeck

    Download the plugin from getvibedeck.com with your license key, then drag the actions you want into a Stream Deck profile.

  2. 2

    Select and preview

    Open the Install Hooks Property Inspector, choose only the detected agents you want, and preview the configuration files VibeDeck will extend. Nothing is selected by default.

  3. 3

    Install, then start a session

    Install the selection. VibeDeck backs up the current files, adds only its own entries, validates the result, and rolls back if anything fails.

Manage Codex effort and model from the deck.

VibeDeck runs the server side automatically (state lives under ~/.vibedeck/codex-control/). Your only step: attach your codex command — one PATH line, explained on the install page.

Without that step, model select, effort, presets, and Approve / Deny stay in Codex's own picker and terminal prompts. Already-open Codex sessions must restart to become controllable.

How to install & attach

Not yet available on Windows — planned for a future update.

Every action. No feature tiers.

VibeDeck is one plugin for people who already own a Stream Deck, or want one control surface for a growing coding-agent workflow.

Subscription$5/month · 7-day free trial · cancel anytime Start 7-day free trial

Local tax may apply at checkout.

Session visibility

Working, waiting, done, and error cards where each agent exposes them.

Physical controls

Focus, supported approvals, effort, models, presets, voice dictation, commands, usage, and sounds.

Workflow keys

Turn builds, tests, deploys, CI, and scripts into named Custom Signals.

Tap once. Keep working.

The last session you tap becomes the target for Effort, Model, Agent Config, and Custom Command. A white ring shows exactly what the next control will affect.

Terminal focus support Compatibility

iTerm2Exact focus, command typing, and hold-to-interrupt

Terminal.appTab focus and command typing with Accessibility

Other macOS terminalsApp focus and System Events typing where supported

Windows Terminal x64Verified tab focus and typing with captured session identity

Completed session controls Selected target

Tap a done card to select and focus it; the card stays available instead of clearing. You can prepare the next turn with Effort, Model, Agent Config, or Custom Command. Hold a done or error card when you want to dismiss it.

Dictation, translation, and privacy Opt-in

Enable hold-to-dictate from the Push Dictation settings, then choose your microphone and either your own OpenAI API key or a compatible local Whisper server. Translation mode asks the configured endpoint to translate speech to English. Audio is recorded only while held, the temporary file is deleted after every attempt, and the terminal never runs the result until you tap.

How hook installation protects your config Safety

VibeDeck installs only after you choose agents and preview the files. Existing hook arrays are preserved, conflicting single-slot entries are skipped, and invalid configurations are left untouched. A backup is created before changes; the latest ten installation backups are retained.

System requirements Hardware + software

Requires Stream Deck hardware, Stream Deck 6.5 or newer, and macOS 13+ or Windows 10+. Stream Deck+ is optional and adds dial control for Reasoning Effort and Model.

Give any workflow its own key.

A Signal ID is the address you choose for a Custom Signal button. Send a state to that address from a hook, build, test, or deploy script and the right key changes instantly.

workingdoneneeds_youerroridle
your script sendssignalId: "tests"
TESTStests
DEPLOYdeploy

Unique ID, one key. Reuse release on two buttons when you want both to update together.

  1. 01

    Drag in Custom Signal

    Add the action to any free Stream Deck key.

  2. 02

    Set the Signal ID

    Use a memorable address such as agent-progress.

  3. 03

    Send a state

    Call the VibeDeck helper from your workflow. Delivery is silent and never changes its exit status.

Make the key tell the story.

Choose an agent and operating system. Add these non-blocking calls alongside the matching native lifecycle hooks; do not replace VibeDeck's installed hooks.

Configuration~/.claude/settings.json

Merge these event groups into the matching arrays in hooks. Keep every existing setting and hook, including VibeDeck-installed entries.

Claude Code · merge-safe JSON fragment
{
  "hooks": {
    "UserPromptSubmit": [{
      "hooks": [{
        "type": "command",
        "command": "$HOME/.vibedeck/vibedeck-signal.sh agent-progress working 'Agent is building'"
      }]
    }]
  }
}

Coverage: Claude exposes working, needs-you, done, error, and session-end events.

Send the local request directly curl + PowerShell
macOS / Linux · authenticated curl
curl --silent --max-time 1 \
  -X POST http://127.0.0.1:37373/signal \
  -H 'Content-Type: application/json' \
  -H "X-VibeDeck-Token: $(cat "$HOME/.vibedeck/auth-token")" \
  --data '{"signalId":"agent-progress","state":"working","label":"Agent is building","sound":false}'
Windows · Invoke-RestMethod
$headers = @{ 'X-VibeDeck-Token' =
  (Get-Content "$HOME/.vibedeck/auth-token" -Raw).Trim() }
$body = @{ signalId = 'agent-progress'; state = 'working';
  label = 'Agent is building'; sound = $false } | ConvertTo-Json
Invoke-RestMethod -Uri 'http://127.0.0.1:37373/signal' `
  -Method Post -ContentType 'application/json' `
  -Headers $headers -Body $body -TimeoutSec 2

Before you put it on deck.

What does VibeDeck cost?

$5/month, billed by Lemon Squeezy, with a 7-day free trial. You won't be charged until the trial ends, and you can cancel any time before that — right from the Lemon Squeezy customer portal, no support email needed. Your subscription unlocks all 18 current actions: session cards, six agent-specific session actions, Approve / Deny, two usage actions, Install Hooks, Sounds, Custom Signal, Reasoning Effort, Model, Agent Config, Custom Command, and Push Dictation. If a subscription lapses, VibeDeck's actions lock until it is renewed; see Terms.

Does dictation need an OpenAI key?

No. Push Dictation is included with VibeDeck, but voice-processing services are not. You can use your own OpenAI API key, with API usage billed separately by OpenAI, or run a compatible local Whisper server and leave the key empty. Translation mode translates speech to English when your configured endpoint supports it. Dictation is off by default, and nothing is submitted until you tap.

Can I switch models for Claude Code and Codex?

Claude Code gets a direct opus, sonnet, fable, and haiku carousel on a key or Stream Deck+ dial. Codex shows its current model and opens Codex's native model picker; VibeDeck does not select a Codex model directly.

Which controls follow the selected session?

Tap a session card first. Reasoning Effort, Model, Agent Config, and Custom Command then act on that selected Claude Code or Codex session where supported. Custom Command can target other agents when terminal text injection is available.

What sounds can I configure?

Choose separate global sounds for approval, question, and error alerts, preview them, use a short custom WAV, disable a category, reset defaults, or mute every VibeDeck alert from one key.

Are hooks installed automatically?

Never on launch. You explicitly select agents in the Install Hooks Property Inspector, preview the affected files, and then confirm the installation.

What if I already use custom hooks?

VibeDeck adds its entries alongside existing hook arrays. Invalid files and single-slot conflicts are left untouched and shown as Needs review.

Do I need every supported agent?

No. Configure only the ones you use. Agent-specific keys stay independent.

What happens if Stream Deck is closed?

Status delivery quietly fails and your coding agent continues. Permission connections return control to the agent’s normal prompt.

How many devices can I use my key on?

Up to 2 devices at a time. Deactivate an old machine from the setup page, or clear every activation at /reset if the machine is gone.

Is VibeDeck official?

No. VibeDeck is an independent product and is not affiliated with Elgato, Anthropic, OpenAI, Cursor, GitHub, Google, or OpenCode.

Key still idle?

Confirm the Stream Deck app is running, VibeDeck is enabled, and start a fresh agent session after setup.

Open troubleshooting steps
  1. Restart VibeDeck from the Stream Deck app.
  2. Open the Install Hooks Property Inspector and press Refresh.
  3. Review any Needs review message, then start a new session and send one prompt.

Email [email protected] with your agent, operating system, and exact error. Never send API keys or tokens.