Getting Started
A step-by-step guide to installing heyvm, creating your first sandbox, running code, mounting project files, and deploying an app.
1. Install heyvm
curl -fsSL https://heyo.computer/heyvm/install.sh | sh
The script detects your OS and architecture and places the binary in /usr/local/bin (or ~/.local/bin if not writable). To upgrade later, run heyvm --upgrade.
2. Set up a backend
heyvm needs at least one sandbox backend. Pick the one that fits your platform:
| Backend | Platform | Best for |
|---|---|---|
| Microsandbox | Linux, macOS | General use, cloud deployment |
| Bubblewrap | Linux | Lightweight namespace isolation |
| Libvirt | Linux | Full VM isolation with KVM |
| Apple Container | macOS | Native macOS virtualization |
For a quick local setup, Microsandbox is recommended. See the individual backend pages for installation instructions.
3. Create your first sandbox
heyvm create --name hello --type shell
This creates a shell sandbox using the default backend and image from your settings. You can also specify a backend and image explicitly:
heyvm create --name hello \
--type shell \
--backend-type bubblewrap \
--image ubuntu:24.04
Available sandbox types: shell, python (alias: py), node (aliases: nodejs, js).
4. Run commands
Execute a one-off command in your sandbox:
heyvm exec hello -- echo "Hello from inside a sandbox!"
Or open an interactive shell:
heyvm sh hello5. Mount project files
Mount a local directory into a sandbox so your code is available inside:
heyvm create --name my-app \
--type node \
--mount ./my-project:/workspace
You can also add mounts to an existing sandbox:
heyvm mount-add -i my-app --host-path ./my-project --sandbox-path /workspace
Then run your project:
heyvm exec my-app -- npm install
heyvm exec my-app -- npm start6. Expose a port
If your app runs a server inside the sandbox, expose its port:
heyvm bind my-app 3000
This proxies the sandbox port to a public hostname (requires API_HOSTNAME to be set). For local development, you can also use P2P tunnels — see Local Tunnels & Proxies.
7. Work with git worktrees
Create a sandbox backed by a git worktree for a feature branch — great for isolated development and parallel agent work:
# Create + attach (VM shuts down when you exit the shell)
heyvm wt feat/my-feature -b
# Detached: VM keeps running after the CLI exits
heyvm wt feat/my-feature --detach
# Reattach later
heyvm wt feat/my-feature --shell
# Deploy the worktree to a cloud sandbox
heyvm wt feat/my-feature --deploy
See the full worktree sandboxes guide
for detached workflows, custom images, and cloud deploys (including
cross-arch --publish-image).
8. Share a sandbox
Share a running sandbox with a teammate over P2P:
# On your machine
heyvm share my-app --name pair-session
# On their machine
heyvm ssh pair-session
No VPN or port forwarding needed — it uses iroh-based P2P tunnels.
9. Deploy to the cloud
To deploy an app to Heyo's cloud infrastructure:
-
Archive your sandbox mounts:
heyvm archive my-app --name v1Or archive a local directory directly:
heyvm archive-dir ./my-project --name v1 -
Deploy using the Heyo cloud API (requires a paid account).
-
Mount and update a deployed sandbox remotely:
heyvm mount <deployed-id> heyvm update <deployed-id> --archive <archive-id>
For full deployment details, see Deployment.
10. Manage sandboxes
List, stop, restart, and clean up:
# List running sandboxes
heyvm list
# List stopped sandboxes
heyvm list-inactive
# Stop a sandbox
heyvm stop my-app
# Restart a sandbox
heyvm restart my-app
# Start a stopped sandbox
heyvm start my-appNext steps
- CLI reference — full list of commands and options
- Local Tunnels & Proxies — P2P networking
- ACP integration — configure the Application Control Panel
- Deployment — run heyvm as a production API server