Skip to main content
Version: 5.0.0

Command Line Interface

Visibox ships with a visibox command-line tool for controlling a running Visibox instance from your shell. It’s a lightweight alternative to the AI Assistants integration for quick one-offs, shell aliases, scripting, and hotkey tools.

The CLI is a thin wrapper over the same HTTP REST API used by the Stream Deck plugin and the MCP server — so anything the CLI can do, any other client can too.

Installation

Install the CLI from inside Visibox:

  1. Choose Settings > Install CLI Tool… (on Mac, from the Visibox menu; on Windows, from the File menu).
  2. Visibox installs the visibox command and shows you where it landed. On a new terminal you can immediately run visibox health to confirm it’s working.

To remove it later, choose Settings > Install CLI Tool… again — Visibox will detect that it’s already installed and offer an Uninstall option.

note

You may need to open a new terminal window (or source your shell profile) after installing so the visibox command is on your $PATH.

Quick Start

# Is Visibox running?
visibox health

# What's playing?
visibox status

# Control playback
visibox play
visibox stop
visibox next
visibox prev

Connection and Authentication

By default the CLI connects to http://127.0.0.1:51736 on your local machine, and localhost connections skip authentication — nothing to configure for scripting your own Visibox.

For connecting to a remote Visibox, you need a pairing token. See Remote Pairing for how to pair, then pass the token via a flag or environment variable:

Flag / VariablePurpose
--host <host> / VISIBOX_HOSTHost to connect to
--port <port> / VISIBOX_PORTPort (default 51736)
--token <token> / VISIBOX_TOKENPairing token for remote connections

The CLI also reads a token from ~/.visibox/mcp-token if present — the same file the MCP server uses — so if MCP is already working, the CLI works too.

Playback

CommandWhat it does
visibox playStart playback
visibox stopStop playback
visibox pausePause
visibox resumeResume
visibox nextNext Clip
visibox prevPrevious Clip
visibox next-songNext Song
visibox prev-songPrevious Song
visibox restartRestart the current Clip
visibox stop-allStop all playing Clips
visibox play-toggleToggle play/stop
visibox pause-toggleToggle pause/resume
visibox play-clip <index>Play the Clip at the given index (0-based)
visibox song <index|id>Switch to a Song by index or ID
visibox trigger <clipId>Trigger a specific Clip
visibox seek <clipId> <percent>Seek within a Clip (0–100)

System

CommandWhat it does
visibox fullscreenToggle the Output Window fullscreen
visibox muteToggle output mute
visibox volume <0-100>Set master output volume
visibox panicEmergency reload — restart all Visibox windows

Query

CommandWhat it returns
visibox projectsAll open projects
visibox project [id]Detail for a project (defaults to the active one)
visibox songsSongs in the active Project
visibox clips <songId>Clips in a specific Song
visibox presetsAvailable Visualizer and Effect presets
visibox camerasConnected cameras and HDMI video inputs
visibox app-stateFullscreen / mute / volume state

Editing

The CLI exposes a single edit command that dispatches to any edit action supported by the API:

visibox edit song:update-title --param songId=abc123 --param title="New Title"
visibox edit clip:delete --param clipId=xyz789

The action names and parameters match the WebSocket action schema. This is the same mechanism the AI Assistants integration uses under the hood.

JSON Output

Append --json to any command to get machine-readable output instead of formatted text. This is the right mode for piping into jq, grep, or another script:

visibox status --json | jq '.project.name'
visibox songs --json | jq -r '.[].title'

Targeting a Specific Project

Most commands default to the active Project. Use --project <id> to target a different one:

visibox songs --project abc123
visibox play --project abc123

Global Options

OptionDescription
--jsonOutput raw JSON instead of formatted text
--host <host>Visibox host (default 127.0.0.1)
--port <port>Visibox port (default 51736)
--token <token>Auth token for remote connections
--project <id>Target Project ID (default: active Project)
--timeout <ms>Request timeout in milliseconds (default 5000)

Exit Codes

CodeMeaning
0Success
1Application error (Visibox returned an error)
2Connection error (Visibox not running or unreachable)

Exit codes make the CLI friendly to shell scripts — check $? or chain with && / \|\| like any other Unix tool.

Examples

# Fire off a panic reload from a Stream Deck button, keyboard shortcut tool, or hotkey app
visibox panic

# Rotate through songs on a timer (e.g., in a soundcheck playlist script)
for i in 1 2 3 4 5; do
visibox song $i
sleep 30
done

# Dump a set list for a show document
visibox songs --json | jq -r '.[] | "\(.index). \(.title)"'

# Trigger the first Clip of every Song in sequence — hands-off preview
visibox songs --json | jq -r '.[].id' | while read songId; do
visibox song "$songId"
visibox play-clip 0
sleep 15
done
tip

The CLI, the Stream Deck plugin, and AI Assistants are three ways to reach the same underlying API. Reach for the CLI when you want scripting or shell-speed control, the Stream Deck for physical buttons, and an AI assistant when you want to drive Visibox with natural language.