Introduction
Beachball schedules disposable Firecracker microVMs. A controller requests an allocation through the public API, the scheduler reserves capacity on an eligible host, and the host agent creates and removes the microVM.
Beachball does not define what runs inside an allocation. Workload-specific controllers, such as a CI runner controller, use the allocation API and manage their own workload lifecycle.
Components
Beachball has two main components:
- The TypeScript scheduler exposes the
/v1API and stores authoritative allocation and host state in SQLite-backed Durable Objects. - The Rust
bbexecutable provides the client CLI, operator commands, and the privileged host agent.
The guest bootstrap is also written in Rust. It passes identity and one-time bootstrap data into each microVM.
Start with installation, then create your first allocation.