Sandboxed microVMs on your own hosts, driven by an API.
Fuse is a control plane for Firecracker and QEMU microVMs. Register your hosts, describe a
workload in a Fusefile, and Fuse schedules it, boots the VM, and tracks the whole lifecycle
(provision, running, drain, destroy) with snapshots, fork, exec, live event streams, and
Prometheus metrics. CPU workloads run on Firecracker; GPU workloads run on QEMU hosts with
whole cards or MIG slices.
You bring the hosts. State lives in Postgres and on your disks, nowhere else.
brew install --cask folsomintel/fuse/fuseUpgrade with brew upgrade --cask fuse, check with fuse --version. On Linux, grab the
fuse-cli_Linux_*.tar.gz archive from the
latest release, or build from a
checkout with go build -o bin/fuse ./cli. Mind the naming: the fuse_* archives are the
orchestrator, fuse-cli_* is the CLI.
The CLI is only a client. You need an orchestrator reachable over HTTP and at least one host
agent running before it can do anything. sudo ./fc-agent.sh bootstrap in
host-agent/ brings both up on a single machine.
fuse quickstart # connect an orchestrator, register a host
fuse init # scaffold a Fusefile
fuse up --secret pg_password=devpassword
fuse environment list
fuse environment exec <id> -- echo hello
fuse environment fork <id>quickstart needs a tty. Headless, run the two commands it wraps:
fuse connect https://orch.example.com --token "$ORCH_AUTH_TOKEN"
fuse host register prod-east-1 --url http://10.0.0.5:8090 --token "$FC_AGENT_TOKEN" --max-vms 20- Quickstart, the steps above with the detail
- Fusefile, the YAML
fuse upcompiles - Guides, agent sandboxes, CI runners, GPU workloads, interactive debugging
- Self-hosting, orchestrator deploy plus Firecracker and GPU host setup
- CLI reference, every command, flag, and context
- REST API, the OpenAPI spec the docs site renders
- SDKs, Go (
sdks/go), Python (folsom-fuse), TypeScript (@folsom/fuse)
Go 1.26 monorepo, no Makefile. Most tests run against in-memory stubs, so you need neither VMs nor Postgres to work on it.
gofmt -l . # must print nothing
go vet ./...
go build ./...
go test ./... -race -count=1
golangci-lint run ./... # pinned to v2.12.2 in ciMIT, see LICENSE.