Commands
Overview
Section titled “Overview”| Command | Description |
|---|---|
vybn init [--force] | Interactive configuration wizard |
vybn deploy [--connect] [-y] | Create the VM with Claude Code pre-installed |
vybn connect [window] | SSH + tmux attach (optionally to a specific window) |
vybn code [name|--path] | Open VS Code / Cursor on the VM via Remote SSH |
vybn session <name> [path] | Create a new Claude Code tmux window |
vybn sync-skills | Copy installed Claude Code skills to the VM |
vybn start | Start a stopped VM |
vybn stop [-y] | Stop the VM (preserves disk) |
vybn destroy [-y] | Delete VM and network infrastructure |
vybn status | Show VM state and tmux sessions |
vybn check | Validate prerequisites before deploying |
vybn ssh [--batch] [command] | Raw SSH to the VM |
vybn add-key <key|opts> | Add SSH public key(s) to the VM |
vybn tunnel <port> [local] | Forward a TCP port (background); also: list, kill |
vybn update [version] | Update Claude Code on the VM |
vybn logs | View the VM setup log |
vybn switch-network <backend> | Switch the network backend on a running VM |
vybn version | Show version |
vybn help | Show usage |
Use vybn <command> --help for details on any command.
Interactive configuration wizard. Walks through every setting and writes a validated ~/.vybnrc.
vybn initOptions:
-f, --force— back up and overwrite existing~/.vybnrcwithout prompting
The wizard prompts for:
- Provider (GCP or SSH)
- Network backend (Tailscale or IAP)
- Provider-specific settings (GCP project/zone or SSH server details)
- VM name, machine type, and disk size (GCP) or hostname (SSH)
- Tailscale auth key (if using Tailscale)
- Toolchains, extra packages, and custom setup scripts
Re-run vybn init to update your configuration — existing values are pre-filled as defaults.
deploy
Section titled “deploy”Create a new VM with Claude Code pre-installed.
vybn deployOptions:
-y, --yes— skip the confirmation prompt--connect— after deploy completes, attach to the tmux session--script-only— output the assembled setup script to stdout and exit (does not deploy)
Before creating the VM, deploy shows a summary with estimated monthly cost (GCP) or server details (SSH) and asks for confirmation. Use -y to skip this.
GCP provider: provisions a VM, runs the setup script as startup metadata, and waits for the VM to become reachable.
SSH provider: uploads the setup script to the server via SCP and executes it over SSH. The server must already be running and accessible.
connect
Section titled “connect”Attach to the tmux session on the VM. If the session doesn’t exist, one is created automatically.
# Attach to the default sessionvybn connect
# Attach and jump to a named window (created if it doesn't exist)vybn connect myprojectThe [window] argument is a shortcut: if a window with that name already exists, connect selects it; if it doesn’t, connect creates it and then attaches. This means you can always run vybn connect myproject without worrying about whether the window is there yet.
Because sessions are persistent on the VM, you can close your laptop, switch networks, or even reboot your local machine — then vybn connect picks up exactly where you left off.
Open VS Code or Cursor connected to the VM using the Remote SSH extension. Automatically manages an SSH config entry (Host vybn) in ~/.ssh/config.
# Auto-detect project from current directoryvybn code
# Open a session's registered directoryvybn code myproject
# Open an explicit path on the VMvybn code --path /opt/appArguments:
name— session name to open. Looks up the path fromsessions.conf, or falls back to$VYBN_PROJECTS_DIR/<name>--path <path>— explicit absolute path on the VM to open
With no arguments: checks if basename $PWD matches a session name on the VM. If it matches, prompts to open that path. Otherwise opens $VYBN_PROJECTS_DIR.
Editor selection: set VYBN_EDITOR=code or VYBN_EDITOR=cursor in ~/.vybnrc. If not set, vybn auto-detects (Cursor first, then VS Code). If neither CLI is found, the SSH config is still written and manual connection instructions are printed.
SSH config block: vybn writes a managed block between # vybn-start / # vybn-end markers in ~/.ssh/config. The block is updated only when something changes (idempotent). The host alias is vybn, so you can also run ssh vybn directly.
Cleanup: vybn destroy prompts to remove the SSH config block.
session
Section titled “session”Create a new tmux window with Claude Code running in a specific directory.
# New window named "backend" in the default home directoryvybn session backend
# New window with a specific working directoryvybn session backend ~/projects/backendEach window runs an independent Claude Code instance, so you can work on multiple projects simultaneously. Pair this with connect to jump between them:
# Set up two project windowsvybn session frontend ~/projects/frontendvybn session backend ~/projects/backend
# Later, reconnect straight to the one you needvybn connect backendsync-skills
Section titled “sync-skills”Copy your locally installed Claude Code skills to the VM.
vybn sync-skillsSyncs all skill directories from ~/.claude/skills/ on your local machine to the VM. Run this after installing or updating skills locally.
Start a stopped VM. Waits until the VM is reachable via SSH before returning.
vybn startStop the VM to save on compute costs. Disk is preserved.
vybn stopOptions:
-y, --yes— skip the confirmation prompt
destroy
Section titled “destroy”Delete the VM and all associated network infrastructure.
vybn destroyOptions:
-y, --yes— skip the confirmation prompt (which normally requires typing the VM name)
GCP provider: deletes the VM, its boot disk, and all associated network infrastructure. This action is not reversible.
SSH provider: deregisters from Tailscale and cleans up local state files. The remote server itself is not modified or deleted.
status
Section titled “status”Show the VM’s current state and list active tmux sessions.
vybn statusValidate that all prerequisites are met before deploying.
vybn checkRuns provider-specific checks and reports pass/fail for each.
GCP provider:
- gcloud CLI installed and authenticated
- GCP project configured
- Compute Engine API enabled
- Network-specific checks (Tailscale CLI, auth key, etc.)
SSH provider:
- SSH client installed
VYBN_SSH_HOSTconfigured- SSH key readable (if set)
- SSH connectivity to the server
- Tailscale CLI and auth key
Both providers also verify the VM setup script exists for the provider/network combination.
Exits 0 if all checks pass, 1 if any fail. Run this before vybn deploy to catch configuration issues early.
Raw SSH passthrough to the VM. Useful for running one-off commands.
# Interactive shellvybn ssh
# Run a commandvybn ssh 'cat /var/log/vybn-setup.log'
# Batch mode (no PTY, no interactive prompts — useful in scripts)vybn ssh --batch 'cat /etc/os-release'Options:
-b, --batch— batch mode: disables PTY allocation and interactive prompts, suitable for scripted use
tunnel
Section titled “tunnel”Forward TCP ports from the VM to your local machine. Tunnels run in the background by default and are tracked so you can list and kill them.
Open a tunnel
Section titled “Open a tunnel”# Background (default): returns immediately, tunnel runs in backgroundvybn tunnel 8080 # localhost:8080 -> VM:8080vybn tunnel 3000 9000 # localhost:9000 -> VM:3000
# Foreground: blocks until Ctrl-C (useful for quick one-off tunnels)vybn tunnel 8080 -fIf the local port is omitted, it defaults to the same as the remote port.
List active tunnels
Section titled “List active tunnels”vybn tunnel listShows all tracked tunnels with their local port, remote port, VM name, PID, and uptime. Stale entries (where the process has exited) are cleaned up automatically.
Kill tunnels
Section titled “Kill tunnels”# Stop a specific tunnel by local portvybn tunnel kill 8080
# Stop all tunnelsvybn tunnel kill alladd-key
Section titled “add-key”Add SSH public key(s) to the VM’s authorized_keys. Three modes are available:
From SSH.id
Section titled “From SSH.id”Fetch public keys from sshid.io, which exposes device-bound keys from Termius. This is the easiest way to authorize mobile devices.
vybn add-key --sshid johndoeThe fetch happens on your local machine (not the VM), so this works even if the VM has restricted outbound access.
From a file
Section titled “From a file”Read one or more keys from a local file (one per line, blank lines and #comments are skipped):
vybn add-key --file ~/.ssh/id_ed25519.pubInline key
Section titled “Inline key”Pass a single public key directly:
vybn add-key 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... user@device'Duplicate keys are detected and skipped. All keys are validated against standard SSH public key format before being added.
update
Section titled “update”Update Claude Code on the VM.
# Update to the latest versionvybn update
# Install a specific versionvybn update 2.1.38For latest, this uses claude update. For a specific version, it uses the native installer (claude.ai/install.sh). The /usr/local/bin/claude symlink is updated automatically.
View the VM’s setup log (/var/log/vybn-setup.log). Useful for debugging deploy issues or checking what the startup script did.
# Last 50 lines (default)vybn logs
# Last 100 linesvybn logs -n 100
# Follow in real time (Ctrl-C to stop)vybn logs -fswitch-network
Section titled “switch-network”Switch the network backend on a running VM. This reconfigures the VM in-place without redeploying.
# Switch from Tailscale to IAPvybn switch-network iap
# Switch from IAP to Tailscalevybn switch-network tailscaleThe command handles all the necessary setup on the VM (installing Tailscale, updating firewall rules, etc.) and updates ~/.vybnrc to persist the change.