SSH is the most direct way to use boxd. No install needed — just an SSH key.
Getting started
If your key isn’t linked yet, you’ll get a URL to sign in with GitHub. Once linked, you’re in.
To skip host key prompts, add this to ~/.ssh/config:Host boxd.sh *.boxd.sh
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
Managing machines
Pass commands directly to ssh boxd.sh:
ssh boxd.sh new --name=myapp # create a machine
ssh boxd.sh list # list your machines
ssh boxd.sh fork myapp --name=copy # fork with full disk copy
ssh boxd.sh reboot myapp # reboot
ssh boxd.sh destroy myapp # destroy
Or use the interactive boxd> prompt:
boxd -- your cloud, your rules
Type 'help' for available commands.
boxd> list
name status url image
myapp running myapp.boxd.sh default
boxd> exit
goodbye
Running commands inside machines
Use exec to run commands inside a machine:
ssh boxd.sh exec myapp -- ls /home
ssh boxd.sh exec myapp -- sudo apt install -y nodejs
ssh boxd.sh exec myapp -- 'cd /app && python3 server.py'
Wrap commands containing shell metacharacters (&&, |, >, $, etc.) in single quotes so your local shell passes them through unchanged.
Commands run as the boxd user with passwordless sudo. Working directory is /home/boxd.
Additional flags:
ssh boxd.sh exec myapp -e API_KEY=secret -- CMD # set env vars
ssh boxd.sh exec myapp --timeout 30 -- CMD # timeout
ssh boxd.sh exec myapp --tty -- bash # interactive TTY
cat config.json | ssh boxd.sh exec myapp -- 'cat > /home/boxd/config.json' # pipe stdin
Copying files
Downloads write to stdout, uploads read from stdin. Paths after : are relative to /home/boxd unless they start with /.
ssh boxd.sh cp myapp:output.log > output.log # download
ssh boxd.sh cp myapp:/etc/nginx/nginx.conf > nginx.conf # absolute path
cat config.json | ssh boxd.sh cp myapp:config.json # upload
Max file size: 100 MB.
Direct SSH into a machine
SSH directly into any machine using its domain:
You land in a shell as the boxd user. All standard SSH features work:
- SCP — copy files to/from the machine
- Port forwarding — tunnel ports through SSH
- VS Code Remote SSH — develop remotely
- rsync — sync files over SSH
Direct SSH only works for the machine owner. Your SSH key must match the key registered to your account.
Connecting interactively
connect opens a shell session inside a machine via the control plane:
ssh boxd.sh connect myapp
This is an alternative to direct SSH (ssh myapp.boxd.sh). Use whichever you prefer.
Managing proxies
Every machine gets a default proxy at name.boxd.sh forwarding to port 8000.
ssh boxd.sh proxy list --vm=myapp # list
ssh boxd.sh proxy set-port --vm=myapp --port=3000 # change port
ssh boxd.sh proxy set-port --vm=myapp --port=auto # auto-detect
ssh boxd.sh proxy new api --vm=myapp --port=3001 # subdomain
ssh boxd.sh proxy delete api --vm=myapp # remove
JSON output
Add --json to any command for structured output:
[
{
"name": "myapp",
"vm_id": "9645b1e8-...",
"status": "running",
"url": "myapp.boxd.sh",
"image": "default"
}
]
Identity
Adding more SSH keys
SSH from a different machine with a new key and go through the same link flow. The new key gets linked to your existing account (matched by GitHub identity).