Skip to main content
Use this checklist before you run StacyVM locally or deploy it for other developers.

Quick Checklist

Local Development

For the simplest local path, you need:
  • Docker installed and reachable by the StacyVM process.
  • Port 7423 available on localhost.
  • curl for API smoke checks.
  • Python 3.9+ if you want to use the Python SDK or examples.
  • Node.js 18+ if you want to use the TypeScript SDK or examples.
  • Go if you want to run make serve, go test ./..., or build from source.
If you do not have Go installed, use a release binary or Docker Compose instead of make serve. The lowest-friction local setup path is:
The npm setup command can clone StacyVM, run npm install for the web, SDK, and TypeScript example packages, download Go modules, build the StacyVM binary, and start the server. It still expects Docker and Go to be installed on the host. Once the repository is already cloned, the source-checkout setup path is:
make dev checks Go, Docker, Docker daemon access, and port 7423, then builds StacyVM and starts ./stacyvm serve. It does not install Docker Desktop or OS packages for you; when something is missing, it prints the right OS-specific fix. To test the current GitHub source directly without waiting for the npm package, use:

OS Setup

Choose the setup path for the machine where you will run StacyVM.

macOS

macOS is a good local development environment for the Docker provider, SDKs, and docs. Use Docker Desktop as the runtime. Firecracker is not a macOS starter path because it requires Linux/KVM. Install tools:
Install and start Docker Desktop, then verify Docker works:
Run StacyVM from source:
Check the API:
Use multi-architecture images such as python:3.12, node:20, or alpine:latest on Apple Silicon.

Windows

Use Windows with WSL 2. Run StacyVM commands inside Ubuntu on WSL, not in PowerShell, so paths, shell behavior, and Docker integration match Linux more closely. Install:
  • WSL 2 with Ubuntu.
  • Docker Desktop with WSL integration enabled for your Ubuntu distro.
  • Go, Git, curl, and make inside Ubuntu.
Inside Ubuntu on WSL:
Run StacyVM:
If Docker commands fail inside WSL, open Docker Desktop settings and enable WSL integration for the Ubuntu distro you are using.

Linux

Linux is the recommended host family for runtime work and production certification. Docker is the easiest first provider; Firecracker and PRoot require additional host-specific setup. Install basic tools with your distribution package manager:
Log out and back in after adding your user to the Docker group, then verify:
Run StacyVM:

Ubuntu

Ubuntu is the most straightforward Linux path for individual setup and single-node staging. Install Docker and build tools:
Log out and back in, then verify:
Run StacyVM:
For production-like Ubuntu hosts, continue with Production Deployment after local verification.

Runtime Requirements

Docker

Docker is the recommended first runtime because it is easiest to install and validate.
  • Docker daemon running on the host.
  • Permission for the StacyVM process to create and destroy containers.
  • Resource limits configured for memory, CPU, TTL, and concurrent sandboxes.
  • Production config that disables unsafe Docker options.

Firecracker

Use Firecracker only after host certification.
  • Linux host with KVM access.
  • Firecracker binary installed.
  • Kernel, rootfs, and StacyVM agent configured.
  • Networking configured for your deployment model.
  • Runtime certification evidence for the exact host class.

PRoot

Use PRoot only after validating the real rootfs and binaries on the target host.
  • PRoot installed.
  • Rootfs path configured.
  • Required shell and runtime binaries available inside the rootfs.
  • File and exec conformance passing for your target workload.

Production Requirements

Before exposing StacyVM to other users, prepare:
  • auth.enabled: true with a strong API key.
  • Separate admin API key for admin routes.
  • Exact server.cors_allowed_origins; do not use wildcard CORS for public browser clients.
  • Rate limits, sandbox caps, TTLs, and quotas.
  • Persistent store path with backups.
  • Health checks for /api/v1/live, /api/v1/ready, and /api/v1/health.
  • Metrics scraping for /api/v1/metrics/prometheus.
  • Audit log retention policy.
  • Runtime certification for every provider you publicly claim.

Verify Your Setup

Verify The Npm Bootstrapper

Run this flow in a fresh terminal when you want to confirm the published stacyvm-setup package, clone path, build path, server, and sandbox execution are all working. Verify the npm package:
Run setup without starting the server:
Expected result:
Start StacyVM:
In a second terminal, check health:
Create a sandbox:
Copy the returned sandbox ID, then run code inside it:
The response should include:
Destroy the sandbox:
After that passes, you can test the full one-command path:

Troubleshooting

Make sure you are using the published package name:
If you are testing an unpublished branch, use the GitHub fallback:
On macOS, start Docker Desktop and wait until it is fully running:
On Windows, run setup inside WSL 2 Ubuntu and enable Docker Desktop WSL integration for that distro.On Linux, start Docker and make sure your user can access it:
Log out and back in after changing groups.
Source setup requires Go because the npm bootstrapper builds the StacyVM binary.macOS:
Ubuntu or Debian:
Stop the process using port 7423, then rerun setup.macOS or Linux:
If you already have StacyVM running, use the existing server and continue with the quickstart.
Reuse the existing checkout after fixing the host issue:
The setup command detects an existing StacyVM checkout and continues from there.
You can skip Docker daemon validation:
This only verifies setup and build behavior. Docker must be running before you create real sandboxes with the Docker provider.
Use a clean npm cache directory:
If npm asks for auth unexpectedly, verify your registry:
It should usually be https://registry.npmjs.org/.
Run config lint before production:
Run host diagnostics after installation:
Run a smoke check against the deployed API:

Continue