Skip to content

Commands

CommandDescription
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-skillsCopy installed Claude Code skills to the VM
vybn startStart a stopped VM
vybn stop [-y]Stop the VM (preserves disk)
vybn destroy [-y]Delete VM and network infrastructure
vybn statusShow VM state and tmux sessions
vybn checkValidate 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 logsView the VM setup log
vybn switch-network <backend>Switch the network backend on a running VM
vybn versionShow version
vybn helpShow usage

Use vybn <command> --help for details on any command.

Interactive configuration wizard. Walks through every setting and writes a validated ~/.vybnrc.

Terminal window
vybn init

Options:

  • -f, --force — back up and overwrite existing ~/.vybnrc without 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.

Create a new VM with Claude Code pre-installed.

Terminal window
vybn deploy

Options:

  • -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.

Attach to the tmux session on the VM. If the session doesn’t exist, one is created automatically.

Terminal window
# Attach to the default session
vybn connect
# Attach and jump to a named window (created if it doesn't exist)
vybn connect myproject

The [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.

Terminal window
# Auto-detect project from current directory
vybn code
# Open a session's registered directory
vybn code myproject
# Open an explicit path on the VM
vybn code --path /opt/app

Arguments:

  • name — session name to open. Looks up the path from sessions.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.

Create a new tmux window with Claude Code running in a specific directory.

Terminal window
# New window named "backend" in the default home directory
vybn session backend
# New window with a specific working directory
vybn session backend ~/projects/backend

Each window runs an independent Claude Code instance, so you can work on multiple projects simultaneously. Pair this with connect to jump between them:

Terminal window
# Set up two project windows
vybn session frontend ~/projects/frontend
vybn session backend ~/projects/backend
# Later, reconnect straight to the one you need
vybn connect backend

Copy your locally installed Claude Code skills to the VM.

Terminal window
vybn sync-skills

Syncs 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.

Terminal window
vybn start

Stop the VM to save on compute costs. Disk is preserved.

Terminal window
vybn stop

Options:

  • -y, --yes — skip the confirmation prompt

Delete the VM and all associated network infrastructure.

Terminal window
vybn destroy

Options:

  • -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.

Show the VM’s current state and list active tmux sessions.

Terminal window
vybn status

Validate that all prerequisites are met before deploying.

Terminal window
vybn check

Runs 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_HOST configured
  • 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.

Terminal window
# Interactive shell
vybn ssh
# Run a command
vybn 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

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.

Terminal window
# Background (default): returns immediately, tunnel runs in background
vybn tunnel 8080 # localhost:8080 -> VM:8080
vybn tunnel 3000 9000 # localhost:9000 -> VM:3000
# Foreground: blocks until Ctrl-C (useful for quick one-off tunnels)
vybn tunnel 8080 -f

If the local port is omitted, it defaults to the same as the remote port.

Terminal window
vybn tunnel list

Shows 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.

Terminal window
# Stop a specific tunnel by local port
vybn tunnel kill 8080
# Stop all tunnels
vybn tunnel kill all

Add SSH public key(s) to the VM’s authorized_keys. Three modes are available:

Fetch public keys from sshid.io, which exposes device-bound keys from Termius. This is the easiest way to authorize mobile devices.

Terminal window
vybn add-key --sshid johndoe

The fetch happens on your local machine (not the VM), so this works even if the VM has restricted outbound access.

Read one or more keys from a local file (one per line, blank lines and #comments are skipped):

Terminal window
vybn add-key --file ~/.ssh/id_ed25519.pub

Pass a single public key directly:

Terminal window
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 Claude Code on the VM.

Terminal window
# Update to the latest version
vybn update
# Install a specific version
vybn update 2.1.38

For 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.

Terminal window
# Last 50 lines (default)
vybn logs
# Last 100 lines
vybn logs -n 100
# Follow in real time (Ctrl-C to stop)
vybn logs -f

Switch the network backend on a running VM. This reconfigures the VM in-place without redeploying.

Terminal window
# Switch from Tailscale to IAP
vybn switch-network iap
# Switch from IAP to Tailscale
vybn switch-network tailscale

The command handles all the necessary setup on the VM (installing Tailscale, updating firewall rules, etc.) and updates ~/.vybnrc to persist the change.