Skip to content

Repository files navigation

Fuse

CI Release Go Reference npm PyPI License: MIT

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.

Install

brew install --cask folsomintel/fuse/fuse

Upgrade 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.

First run

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

Docs

  • Quickstart, the steps above with the detail
  • Fusefile, the YAML fuse up compiles
  • 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)

Contributing

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 ci

License

MIT, see LICENSE.

Releases

Packages

Used by

Contributors

Languages