Built-in shell (vsh) on Mac
Quick-start for vmuxMac's local shell — connections, settings, panes, themes.
Experimental — vsh is under active development. Commands, syntax, and behavior may change between releases. Use the full vsh manual for the canonical reference.
What vsh is on Mac
vsh is vmux's built-in shell. It is the same shell on every vmux platform: a small typed command surface that controls vmux itself — connections, panes, themes, fonts, settings — without leaving the keyboard. On Mac, vsh sits next to the regular login shell that ships with macOS. You can use either, and you can flip between them.
Most of the visionOS vsh commands work on Mac. The ones that do not are spatial-only (VKeyboard, glass background, immersive controls); the full reference at Built-in Shell (vsh) is the source of truth and notes which commands are platform-specific.
Activating vsh
There are two ways to type vsh commands on Mac:
- Standalone — open the command palette with Cmd+Shift+P and run vsh (or whatever you have rebound it to). A shell prompt opens inside the current window. Type vsh commands, press Return, see the result. Press Esc to leave.
- Inline during a managed session — when a vmux managed SSH or Mosh session is active, prefix any command with
!to run it through vsh instead of the remote shell. For example, while connected to a server, typing!themeslists available themes;!set-font-size 16resizes the font.
Tab completion is available for command names and arguments. Press Tab after a partial command to complete it; press Tab again to cycle through alternatives.
A Mac-specific quick start
A typical first vsh session looks like this:
> help
> connect
> ssh user@example.com
> theme
> font
> ghostty-import
> set-titlebar toggle
> set-padding 10helplists every command grouped by category. Pass a name (help ssh) for usage details.connectopens the connection form for managed sessions.ssh user@hoststarts a managed SSH session in the current window.themeswitches themes; the bare command lists them.fontswitches fonts; the bare command lists them.ghostty-importreads your Ghostty config and applies the recognized settings. See Themes and fonts for the key map.set-titlebar toggleflips the hidden-title-bar setting.set-padding 10sets window padding to 10 pixels.
Quick command reference (Mac-relevant)
This is a subset of the full vsh reference, filtered to commands that have a meaningful effect on the Mac app. See the full vsh manual for everything else.
Connection
| Command | Aliases | Description |
|---|---|---|
ssh | Start a managed SSH session. Usage: ssh [user@]host [-p port] [-l user] | |
mosh | Start a managed Mosh session. Usage: mosh [user@]host [-p ssh-port] [--udp port-or-range] | |
connect | Open the connection form. | |
disconnect | dc | Disconnect the current managed session. |
mosh-status | mosh-doctor | Show Mosh runtime diagnostics. |
Settings (macOS-applicable)
| Command | Aliases | Description |
|---|---|---|
set-font-size | font-size | Set font size in points (8 – 32). |
set-font-weight | font-weight | Set font weight (regular, bold). |
set-cursor-style | cursor-style | Set cursor shape (block, hollow, underline, bar). |
set-cursor-blink | cursor-blink | Toggle cursor blink. |
set-cursor-opacity | cursor-opacity | Set cursor opacity (0.05 – 1). Mac-only. |
set-opacity | opacity | Set background opacity (0 – 1). |
set-option-meta | option-meta | Toggle Option as Meta. |
set-colorterm | colorterm | Toggle COLORTERM=truecolor. |
set-titlebar | titlebar | Toggle hidden title bar. Mac-only. |
set-padding | padding | Set window padding (0 – 80). Mac-only. |
set-focus-follows-mouse | ffm | Toggle focus-follows-mouse. Mac-only. |
zoom-in, zoom-out, zoom-reset | Adjust the focused pane's font size. |
Theme and font
| Command | Aliases | Description |
|---|---|---|
theme-list | themes | List installed themes. |
theme-set | theme | Switch theme by name (fuzzy). |
font-list | fonts | List installed fonts. |
font-set | font | Switch font by name (fuzzy). |
Window and tab
| Command | Aliases | Description |
|---|---|---|
pane-new | new | Open a new window or tab. |
pane-close | close-pane, close | Close the current pane. |
pane-list | panes | List open windows. |
clear | cls | Clear the screen. |
clear-scrollback | Clear scrollback (Cmd+K). |
Files and system
| Command | Aliases | Description |
|---|---|---|
ls | List a directory. | |
cat | Show a file. | |
pwd | Print working directory. | |
open | Open a URL in the system browser. | |
pb-copy | Copy text to the system clipboard. | |
pb-paste | Show clipboard contents. | |
env | Show environment info. |
Migration
| Command | Aliases | Description |
|---|---|---|
ghostty-import | Import your Ghostty config. Mac-only. See Themes and fonts. |
Settings commands without arguments
Settings commands print the current value when run without arguments. For example:
set-opacityprints the current background opacity.set-font-sizeprints the current font size in points.set-titlebarprints whether the title bar is hidden.
This makes vsh a quick way to inspect state from the keyboard without opening Settings.
How vsh fits with the local Mac shell
Every new vmuxMac window starts a regular interactive login shell — your usual zsh or bash or fish. vsh is something you launch on top of that, not a replacement for it. The two never share state: vsh has its own command surface and does not see your shell's variables, aliases, or functions, and your shell does not see vsh's commands.
If you find yourself running vsh commands often, bind your favorites to keyboard shortcuts (see Command palette → Keybindable column) so the most common actions are one keystroke.
Where to go next
- Built-in shell (vsh) — the full vsh reference shared across vmux apps.
- Command palette — the GUI equivalent of typing in vsh.
- Themes and fonts —
theme,font, andghostty-importin context. - Connecting — when to use
sshin vsh vs the local shell.