Getting started
Managing machines
Pass commands directly tossh boxd.sh:
boxd> prompt:
Organizations & sharing
If you belong to an organization, the org commands and the--shared flag work both as one-shot ssh boxd.sh β¦ commands and inside the interactive boxd> prompt β same verbs, no ssh boxd.sh prefix needed in the REPL:
--shared flag is optional on both new and fork. Without it, a machine you create or fork in an org context is private to you (the org still pays). In particular, forking a shared machine gives you a private fork by default β only you can reach the copy, and your agent logins work in it again β while --shared keeps the fork open to the whole org. See Share a VM for the full model.
Running commands inside machines
Useexec to run commands inside a machine:
Wrap commands containing shell metacharacters (
&&, |, >, $, etc.) in single quotes so your local shell passes them through unchanged.boxd user with passwordless sudo. Working directory is /home/boxd.
Additional flags:
Copying files
Downloads write to stdout, uploads read from stdin. Paths after: are relative to /home/boxd unless they start with /.
Open a shell in a machine
connect opens an interactive shell inside a machine through the control plane β no port or SSH config needed:
boxd user with passwordless sudo. This is the quickest way in when all you have is ssh boxd.sh.
Direct SSH, SCP, port-forwarding, editors
Each machine listens on a dedicated SSH port (in the 10000β30000 range) on the shared proxy IP, so plainssh, scp, rsync, port-forwarding, and editor Remote-SSH all go through a per-VM host alias in your ~/.ssh/config rather than the bare domain. The boxd CLI writes those aliases for you (the alias is a local SSH-config shortcut, not a DNS name):
boxd new, fork, list, and destroy keep the block in sync automatically. See the CLI reference for details.
The alias lives in your local ~/.ssh/config, so direct SSH (and editor Remote-SSH) needs the boxd CLI β install it with curl -fsSL https://boxd.sh/downloads/install.sh | sh, then boxd ssh-config (or any boxd new / list) writes and keeps the <vm>.boxd entries in sync. Without the CLI, ssh -t boxd.sh connect myapp (above) still gets you a shell through the control plane.
Connecting to the bare
myapp.boxd.sh hostname (port 22) reaches the management REPL, not the machine β that port is the control plane. Use ssh -t boxd.sh connect myapp for a quick shell, or the myapp.boxd alias for direct SSH.Managing proxies
Every machine gets a default proxy atname.boxd.sh forwarding to port 8000.
Exposing raw TCP/UDP ports
Proxies route HTTPS only. To expose a database, an SSH daemon, or any non-HTTP service,expose opens a raw TCP/UDP port on the machineβs public proxy, forwarded straight to a port inside the VM. The public port is allocated from the 40000β60000 range; connect on name.boxd.sh at that port. See Port forwarding.
boxd> prompt too (drop the ssh boxd.sh prefix).
JSON output
Add--json to any command for structured output: