Skip to content

Getting Started

The repository is a Rust workspace first. The docs site is a separate Astro app under site/.

Practical backend rule for local development:

  • use native macOS VZ/vfkit when you are working on the production path
  • use Lima on macOS when you are doing Firecracker development
  • defer a native Linux /dev/kvm host until you need final Firecracker release evidence

If you want the Rust environment to be reproducible, use the Nix shell:

Terminal window
nix develop

If you are only working on the docs site:

Terminal window
cd site
npm install
npm run dev

The first useful commands are:

Terminal window
cargo run -- init --output rvproxy.toml --id tenant-demo
cargo run -- validate --config examples/single-vm.toml
cargo run -- run --config examples/single-vm.toml

rvproxy init writes a starter single-VM config. validate checks schema and runtime assumptions. run starts the daemon and binds the configured local API socket.

Validated examples already exist for the main backend families:

  • examples/single-vm.toml
  • examples/firecracker-single-vm.toml
  • examples/vz-single-vm.toml

For guest-real smoke flows, the checked-in wrappers live under:

  • docs/real-backend-smoke.md
  • examples/real-backend-smoke/

The normal workspace loop is:

Terminal window
just fmt
just check
just test
just bench-plugin-budget
just bench-control-plane-budget

Those last two matter. Plugin and control-plane latency already have explicit regression gates, so “it still works” is not enough if a change drags the hot paths backward.