Skip to content

Waveterm

AI-integrated open-source terminal with persistent sessions, inline graphics, and remote connection management.

CommandDescription
brew install --cask waveInstall on macOS with Homebrew
Download from waveterm.devInstall from official website
Download .deb or .rpm from releasesInstall on Linux
Download .exe installer from releasesInstall on Windows
wsh versionShow Wave CLI version
wsh helpShow available wsh commands
CommandDescription
Cmd/Ctrl + NOpen new terminal tab
Cmd/Ctrl + TOpen new workspace tab
Cmd/Ctrl + WClose current tab
Cmd/Ctrl + Shift + NOpen new window
Cmd/Ctrl + 1-9Switch to tab by number
Cmd/Ctrl + Shift + ]Next tab
Cmd/Ctrl + Shift + [Previous tab
Cmd/Ctrl + Shift + TReopen last closed tab
CommandDescription
Cmd/Ctrl + Shift + DSplit terminal horizontally
Cmd/Ctrl + DSplit terminal vertically
Click and drag block bordersResize terminal panes
Alt + Arrow keysNavigate between blocks
Cmd/Ctrl + EnterMaximize/restore current block
Cmd/Ctrl + Shift + POpen command palette
Cmd/Ctrl + BackspaceClose current block
CommandDescription
Cmd/Ctrl + SpaceOpen AI chat in current block
Type question in AI chatAsk AI about commands or code
/explain in AI chatExplain previous command output
/fix in AI chatSuggest fix for last error
/summarize in AI chatSummarize long output
Click “Apply” on AI suggestionInsert suggested command into terminal
EscClose AI chat panel
CommandDescription
Configure AI model in settingsChoose between OpenAI, Anthropic, local models
Set ai:preset in configSwitch between AI providers
Set ai:apitoken in configConfigure API key for AI provider
Set ai:model in configSpecify model name (e.g., gpt-4, claude-3)
Set ai:baseurl in configPoint to custom/local API endpoint
Set ai:maxtokens in configSet maximum response tokens
{
  "ai:preset": "custom",
  "ai:apitoken": "sk-...",
  "ai:baseurl": "https://api.openai.com/v1",
  "ai:model": "gpt-4",
  "ai:maxtokens": 2048
}

For local models using Ollama:

{
  "ai:preset": "custom",
  "ai:baseurl": "http://localhost:11434/v1",
  "ai:model": "llama3",
  "ai:maxtokens": 4096
}
CommandDescription
wsh ssh user@hostnameConnect to remote host via SSH
wsh ssh user@host -i ~/.ssh/keySSH with specific identity key
wsh ssh -p 2222 user@hostSSH on custom port
Click ”+” then “SSH Connection”Create SSH connection from UI
Connections persist across sessionsSessions survive app restart
wsh ssh-importImport SSH config connections
Configure ~/.ssh/config entriesAuto-discover SSH hosts
Right-click connection then ReconnectReconnect dropped SSH session

Wave reads your SSH config for host discovery. Configure entries for seamless connections:

Host prod-web
    HostName 10.0.1.50
    User deploy
    IdentityFile ~/.ssh/deploy_key
    Port 22

Host staging-*
    HostName %h.staging.example.com
    User admin
    IdentityFile ~/.ssh/staging_key
    ForwardAgent yes

Host jump-box
    HostName bastion.example.com
    User ops
    IdentityFile ~/.ssh/ops_key

Host internal-*
    ProxyJump jump-box
    User admin
    IdentityFile ~/.ssh/internal_key
CommandDescription
wsh view remote:file.txtView file on remote host
wsh edit remote:file.txtEdit file on remote host inline
wsh view remote:/var/log/syslogView remote log file
wsh run --remote user@host -- commandRun command on remote host in new block
CommandDescription
wsh view file.pngView image inline in terminal
wsh view file.jpgView JPEG image inline
wsh view file.svgView SVG graphic inline
wsh view file.mdRender markdown inline
wsh view file.csvDisplay CSV as table
wsh view file.jsonDisplay JSON with syntax highlighting
wsh view file.pdfPreview PDF document
wsh view https://example.comEmbed web page in block
CommandDescription
wsh edit file.txtOpen file in inline editor
wsh edit --lang=python script.pyOpen editor with language mode
wsh getmetaGet current block metadata
wsh setmeta key=valueSet block metadata
wsh run -- command argsRun command in new block
wsh run --magnify -- htopRun command in maximized block
wsh createblockCreate an empty block
wsh createblock --tabid=tab1Create block in specific tab
CommandDescription
wsh view --magnify file.pngView image in maximized block
wsh view --height=20 file.csvView with specific block height
Drag and drop files onto WaveView files directly
wsh view .Browse current directory
wsh view ~/projectsBrowse specific directory
CommandDescription
Open Settings then AppearanceChange theme and colors
Open Settings then TerminalConfigure font, size, cursor
Set term:fontsize in configSet terminal font size
Set term:fontfamily in configSet terminal font family
Set term:theme in configSet terminal color theme
Set term:cursorstyle in configSet cursor style (block, bar, underline)
Set window:transparent in configEnable window transparency
Set window:blur in configEnable background blur
Set window:opacity in configSet window opacity level
Set telemetry:enabled = falseDisable telemetry
{
  "term:fontsize": 14,
  "term:fontfamily": "JetBrains Mono, Menlo, monospace",
  "term:theme": "dracula",
  "term:cursorstyle": "bar",
  "term:scrollback": 10000,
  "window:transparent": true,
  "window:blur": true,
  "window:opacity": 0.92
}
{
  "term:theme": "custom",
  "term:localtheme": {
    "black": "#282a36",
    "red": "#ff5555",
    "green": "#50fa7b",
    "yellow": "#f1fa8c",
    "blue": "#bd93f9",
    "magenta": "#ff79c6",
    "cyan": "#8be9fd",
    "white": "#f8f8f2",
    "brightBlack": "#6272a4",
    "brightRed": "#ff6e6e",
    "brightGreen": "#69ff94",
    "brightYellow": "#ffffa5",
    "brightBlue": "#d6acff",
    "brightMagenta": "#ff92df",
    "brightCyan": "#a4ffff",
    "brightWhite": "#ffffff",
    "background": "#282a36",
    "foreground": "#f8f8f2",
    "cursor": "#f8f8f2",
    "selectionBackground": "#44475a"
  }
}
CommandDescription
Cmd/Ctrl + Shift + PCommand palette
Cmd/Ctrl + LClear terminal
Cmd/Ctrl + Shift + EToggle sidebar
Cmd/Ctrl + KFocus search
Cmd/Ctrl + Shift + FGlobal search
Alt + Arrow keysNavigate between blocks
Cmd/Ctrl + EnterMaximize/restore current block
Cmd/Ctrl + ,Open settings
CommandDescription
Cmd/Ctrl + Shift + CCopy from terminal
Cmd/Ctrl + Shift + VPaste into terminal
Cmd/Ctrl + ASelect all in block
Cmd/Ctrl + FFind in current block
Shift + Page UpScroll up in terminal
Shift + Page DownScroll down in terminal
Cmd/Ctrl + HomeScroll to top of buffer
Cmd/Ctrl + EndScroll to bottom of buffer
CommandDescription
Cmd/Ctrl + DSplit vertically
Cmd/Ctrl + Shift + DSplit horizontally
Cmd/Ctrl + BackspaceClose current block
Cmd/Ctrl + EnterToggle block maximize
Alt + Up/Down/Left/RightMove focus between blocks
Cmd/Ctrl + Shift + ArrowResize current block
CommandDescription
wsh getvar keyGet configuration variable
wsh setvar key=valueSet configuration variable
wsh getvar --allList all configuration variables
Config stored in ~/.waveterm/Default configuration directory
Set autoupdate:enabled in configEnable/disable auto-updates
Set conn:askbeforewshinstall in configPrompt before installing wsh on remote
Set editor:minimap in configToggle minimap in inline editor
Set web:openlinksinternally in configOpen links in Wave browser block
{
  "term:fontsize": 13,
  "term:fontfamily": "Fira Code, monospace",
  "term:theme": "one-dark",
  "term:cursorstyle": "block",
  "term:scrollback": 5000,
  "window:transparent": false,
  "window:blur": false,
  "telemetry:enabled": false,
  "autoupdate:enabled": true,
  "conn:askbeforewshinstall": true,
  "editor:minimap": false,
  "web:openlinksinternally": true,
  "ai:preset": "openai",
  "ai:model": "gpt-4",
  "ai:maxtokens": 2048
}
CommandDescription
WAVETERM_HOME=~/.wavetermOverride Wave config directory
WAVETERM_DEV=1Enable development mode
TERM_PROGRAM=wavetermAutomatically set in Wave sessions
WAVETERM_BLOCKIDCurrent block ID (set per block)
WAVETERM_TABIDCurrent tab ID (set per tab)
CommandDescription
Click workspace name in sidebarSwitch between workspaces
Right-click workspace then RenameRename a workspace
Create new workspace from sidebarAdd a fresh workspace
Drag tabs between workspacesReorganize tabs
Workspaces persist across restartsAll state is saved automatically
CommandDescription
Terminal history persistsCommand output saved across sessions
SSH connections auto-reconnectRemote sessions restored on restart
Block layout saved per tabPane arrangements preserved
Working directories rememberedEach block remembers its cwd
Scroll position maintainedReturn to where you left off
  1. Use blocks for multitasking — split your terminal into blocks to monitor logs, run builds, and edit code side by side.

  2. Leverage AI for unfamiliar commands — press Cmd/Ctrl + Space to ask the AI assistant about syntax, flags, or troubleshooting.

  3. Configure SSH config for quick access — add all your servers to ~/.ssh/config so Wave auto-discovers them in the connection menu.

  4. Use inline viewers for quick inspectionwsh view lets you preview images, CSVs, and markdown without leaving the terminal.

  5. Pin common blocks — maximize important blocks with Cmd/Ctrl + Enter when focusing on a task, then restore the layout when done.

  6. Disable telemetry if preferred — set telemetry:enabled to false in your configuration for privacy.

  7. Use workspaces for projects — create separate workspaces for different projects to keep context organized.

  8. Use -dev suffix for AI model config — point ai:baseurl to a local Ollama or LM Studio instance for private, offline AI assistance.

  9. Learn the block keyboard shortcutsAlt + Arrow for navigation and Cmd/Ctrl + Shift + D for splitting are the most commonly used shortcuts.

  10. Customize your theme — set up a custom color theme using term:localtheme to match your preferred editor colors for a consistent experience.