fl is an experimental command-line client for Flintlock, the microVM
control-plane component of the liquidmetal-dev project. It talks to a Flintlock
host over gRPC to create, list, and delete microVMs.
- Go 1.23
- GoReleaser (used to build/release binaries)
This repo includes a mise config (mise.toml) pinning the tool versions above. If you use
mise, just run:
mise installmake buildThis runs goreleaser release --snapshot --clean, producing binaries for linux/darwin/windows and apk/deb/rpm
packages under dist/.
fl versionDisplays version information.
fl microvm create --host <flintlock-host:port> --name <name> [flags]Creates a new microVM on the given Flintlock host. Use --name-autogenerate instead of --name to have a name
generated for you. See fl microvm create --help for the full set of flags (vcpu/memory sizing, kernel and root
images, network interfaces, cloud-init metadata, additional volumes, etc.).
fl microvm get --host <flintlock-host:port> [vmid]Lists all microVMs on a host, or fetches a single microVM by id.
fl microvm delete --host <flintlock-host:port> <vmid>Deletes a microVM from a host.
fl microvm exec --host <flintlock-host:port> <vmid> -- <cmd> [args...]Runs a command inside a microVM's guest via the flintlock guest-agent. Requires the microVM to have been created
with --allow-guest-agent and the flintlock server to have exec enabled. See fl microvm exec --help for the
full set of flags (working directory, environment variables, running as a specific user, timeouts, forwarding
stdin with -i/--stdin).
fl microvm ssh --host <flintlock-host:port> <vmid> [-- ssh-args...]Opens an SSH session to a microVM's guest, tunnelled through flintlock's ssh-proxy guest-agent service. Requires
the microVM to have been created with --allow-guest-agent and the flintlock server to have ssh proxying
enabled. Any extra arguments after -- are passed through to the underlying ssh invocation (e.g. -l <user>
to select the guest user).
Tagged pushes (v*.*.*) are built and published automatically via GoReleaser (see
.github/workflows/release.yaml and .goreleaser.yaml).