For AI Agents & LLMs
What can an AI agent do through flash-mcp?
flash-mcp gives MCP-compatible agents direct access to the complete FlashVM lifecycle. An agent can create and inspect VMs, apply resource policies, stream metrics and logs, diagnose workload health, capture snapshots, restore or clone execution state, and remove VMs when the work is complete. The same interface also exposes the underlying CLI and HTTP API for advanced workflows.
Does flash-mcp use the same control plane as the CLI?
Yes. flash-mcp maps each operation to either the flash CLI or HTTP over the VM's Unix socket. Agents and human operators use the same lifecycle, resource, and observability paths, so automation behaves consistently with established operator workflows.
Can an agent create fully configured FlashVMs?
Yes. Through flash_cli, an agent can launch a VM with an explicit bundle, workload entry point, CPU template, CPU and memory allocation, disk capacity, disk I/O policy, and network policy. flashnet can establish bridge, NAT, or routed networking while the VMM itself remains unprivileged.
Can agents watch workloads in real time?
Yes. flash_watch streams metrics, workload logs, guest console output, lifecycle events, or guest messages through Server-Sent Events. Progress is delivered as it happens, giving the calling agent live operational context instead of a series of disconnected polling results.
Can an agent operate an entire fleet?
Yes. flash_ls provides host inventory, while flash_watch_fleet follows multiple VMs concurrently and prefixes every result with its VM identity. Each FlashVM retains its own process, socket, limits, and telemetry stream, so fleet automation can act on individual workloads without funneling control through a central daemon.
Can an agent snapshot, restore, and clone a running workload?
Yes. An agent can capture the running state through the snapshot API, restore the original VM through flash_cli, or clone the snapshot into a new identity. Starting the source VM with a CPU template gives the restored workload an explicit CPU compatibility contract wherever it resumes.
Can an agent claim a warm-pool VM?
Yes. A warm-pool spare is already booted and waiting for work. An agent can claim it, assign the workload entry point and resource policy, and begin execution without putting a cold boot on the request path. This makes warm pools a natural fit for latency-sensitive agent workloads and bursty task queues.
Can agents and human operators manage the same VM?
Yes. Both use the same per-VM control socket and see the same state. A human can inspect an agent-created VM with the CLI, while an agent can continue from a VM created by an operator. That shared model makes handoffs straightforward and keeps operational behavior predictable.
How is agent access controlled?
Access follows standard Linux ownership and file permissions on each VM's Unix socket. This lets teams apply familiar user, group, service-account, and process-isolation policies without introducing a separate credential system inside the VMM.
For Developers
What do I need to run FlashVMM?
FlashVMM runs on Linux hosts with KVM and supports both x86_64 and aarch64. It works on bare metal and in virtual machines with nested virtualization enabled, including supported AWS instance families. The installer provides the CLI, VMM, guest kernel, and root filesystem as one standalone distribution.
How do I start my first FlashVM?
Use flash run --bundle PATH and provide the workload entry point and resource policy you want. CPU, memory, disk capacity, disk throughput, disk IOPS, networking, and VM identity are all explicit command-line options. The command can stay attached for interactive use or detach for service and automation workflows.
Can developers run FlashVMs without root privileges?
Yes. Developers can run VMs through a private registry under $XDG_RUNTIME_DIR. The separate flashnet helper performs host networking setup, drops its capabilities, and then launches the unprivileged VMM. This keeps network administration out of the long-running VM process.
How do I connect a FlashVM to the network?
flashnet supports bridge, NAT, and routed modes. Each NIC can carry independent egress bandwidth, packet-rate, and ingress bandwidth policies, and a VM can be created with multiple interfaces. The same limits can be updated while the VM is running.
Can I share files between the host and guest?
Yes. Add a 9p share when the VM is created to mount a host directory at an absolute path inside the guest. It is a direct way to provide source trees, build inputs, configuration, or generated artifacts without packaging them into the root filesystem.
Which resource controls can I change at runtime?
CPU allocation, disk capacity, disk throughput, disk IOPS, and per-NIC bandwidth and packet-rate policies can be managed through the CLI or API. Memory is established as the VM's ceiling at creation, with virtio ballooning available for live reclamation inside that allocation — and, for a VM created with a reserved memory region, virtio-mem for live, host-driven growth and shrinkage of that region, no reboot required.
How do snapshots, restore, and cloning work?
flash snapshot captures a running VM's execution state. flash restore resumes the original VM, while flash clone creates a new VM identity from the same artifact using copy-on-write memory. The workload continues from the captured point instead of starting over.
What is a CPU template?
A CPU template defines the processor features presented to the guest and creates a clear compatibility contract for snapshots. host-raw is the direct choice for workloads that remain on equivalent hosts, while fleet templates provide a consistent feature set for portable restore and migration workflows.
How fast can a workload start?
FlashVMM cold-starts in milliseconds across x86_64 and aarch64. For latency-sensitive paths, warm pools boot FlashVMs before demand arrives; claiming a spare assigns the workload and resource policy to an already-running VM, moving boot work entirely out of the request path.
How does FlashVMM handle block I/O?
Virtio block reads and writes are batched through a 256-entry io_uring queue, reducing syscall overhead and increasing throughput under concurrent I/O. A synchronous path remains available for host compatibility, while flush, discard, and write-zero operations preserve their direct semantics.
Can I integrate FlashVMM with CI or custom tooling?
Yes. The flash CLI is scriptable, every running VM exposes HTTP over its Unix socket, and metrics, logs, and lifecycle events stream over SSE. CI systems, internal platforms, operator tools, and flash-mcp all build on the same control surface.
For Fleet & Cloud Operators
How does FlashVMM scale across a fleet?
Each FlashVM runs in its own process and owns its own Unix socket, resource policy, and telemetry stream. There is no central VMM daemon in the execution path. Fleet controllers can place, observe, update, snapshot, move, and remove VMs independently through the CLI, API, or MCP interface.
How should a scheduler determine host density?
The scheduler places VMs against available host capacity, while FlashVMM enforces the allocation assigned to each workload. CPU, memory, disk capacity, disk throughput, disk IOPS, and network policies remain scoped to the individual VM, giving the orchestration layer a clear and enforceable resource contract.
How does FlashVMM preserve predictable performance between tenants?
Resource controls are independent rather than bundled into a single coarse quota. CPU time is enforced by a signal-driven pacer, disk growth uses host-side admission control, disk I/O uses token buckets, and every NIC has separate egress bandwidth, egress packet-rate, and ingress bandwidth policies.
How does CPU enforcement handle continuously busy guests?
FlashVMM does not depend on the guest yielding voluntarily. A background pacer forces regular exits from guest execution, measures per-thread CPU time, and delays vCPU threads that have consumed their assigned budget. The policy stays effective even for continuously busy workloads.
How are disk capacity and I/O protected?
Disk capacity is reserved before writes are admitted, so the host enforces the VM's allocation independently of guest accounting. Separate throughput and IOPS token buckets shape the virtio block path. Operators can inspect current usage and policy through the same per-VM control API.
How does FlashVMM control network-heavy workloads?
Each NIC combines bandwidth and packet-rate enforcement. Egress traffic must satisfy both its byte and packet budgets, while ingress shaping applies backpressure through the host tap queue. Policies can be updated while the VM remains online.
How is memory managed at fleet scale?
Every VM receives a fixed memory ceiling at placement, giving the scheduler a stable capacity commitment. Virtio ballooning provides live reclamation within that ceiling; a virtio-mem region lets the host resize a tenant's live footprint on demand within its own declared bound, so density decisions are the host's to make and enforce, not the guest's to cooperate with. Copy-on-write cloning lets related workloads share unchanged snapshot pages instead of allocating a private copy for every replica.
How do warm pools handle burst demand?
Warm-pool spares boot ahead of demand and wait at zero workload CPU. A claim assigns the workload, identity, disk capacity, and CPU policy to an already-running VM. Fleet controllers can maintain the pool depth they need and absorb bursts without turning every request into a cold start.
How are running workloads moved between hosts?
FlashVMM composes migration from capture, transfer, and restore. The destination resumes the captured execution state rather than restarting the application, and CPU templates define the feature contract the destination must satisfy. Because each step is exposed through the standard control surface, operators can integrate migration directly into maintenance and placement workflows.
How do I observe a large FlashVMM fleet?
Metrics, logs, lifecycle events, and guest messages stream from every VM over SSE. Consumers receive explicit continuity signals and can persist the streams in their existing observability stack. flash_watch_fleet provides a ready-made concurrent view with every event labeled by VM identity.
How does distributed control improve fleet resilience?
VM execution and control remain local to each flashvmm process. A controller can restart, move, or upgrade independently of running workloads, and each VM continues to operate within its own process boundary rather than depending on a host-wide VMM daemon.
How does FlashVMM compare with Firecracker?
FlashVMM leads the published cold-start comparison on every measured platform, with 5.4× to 29.2× faster startup across x86_64, aarch64, bare metal, and nested virtualization. It also delivers low-single-digit millisecond snapshot restore across x86 environments and reaches 1.36 ms on AWS Graviton3. See Performance for the complete comparison.
For Corporate IT
What is the FlashVMM isolation model?
Each workload runs behind a KVM hardware boundary in its own VMM process and guest kernel. Before guest execution begins, FlashVMM drops capabilities, enables no_new_privs, disables dumpability and core dumps, sets a file-descriptor ceiling, and applies a dedicated seccomp allowlist to every thread.
How does FlashVMM apply least privilege?
The long-running VMM never holds CAP_NET_ADMIN. Host networking is handled by the separate flashnet helper, which completes the privileged setup and removes its capabilities before launching flash run. Deployments can add dedicated users, groups, and filesystem confinement through --run-as, --run-as-group, and --jail-root.
How is access to the control API secured?
Every VM exposes its API through a Unix socket protected by Linux ownership and file permissions. Private registries and sockets make the operating system the authorization boundary, so existing service-account, group, filesystem, namespace, and host-access policies carry directly into FlashVMM deployments.
How does the architecture limit blast radius?
One VM means one process, one address space, one socket, and one set of thread-level syscall policies. Workloads do not share a VMM daemon, and seccomp enforcement is applied per thread. This keeps execution and control boundaries narrow across a multi-tenant host.
Can FlashVMM operate independently of cloud services and external infrastructure?
Yes. FlashVMM is a standalone product with its own distribution, signing keys, updater, CLI, control API, and runtime. VM operation does not depend on another product's repository, CDN, control plane, or hosted account.
Can FlashVMM run in an air-gapped environment?
Yes. Core operation has no phone-home requirement or external runtime dependency. Organizations can mirror the signed distribution inside their own network and operate FlashVMM entirely within their existing security boundary.
How does FlashVMM integrate with existing infrastructure?
The CLI supports automation, the Unix-socket API supports platform integration, and SSE streams feed metrics, logs, and lifecycle events into existing observability and security systems. flash-mcp adds agent-driven operation without creating a separate management path.
What data does FlashVMM collect?
The website uses no analytics and sets no cookies; it stores only the visitor's theme preference in local browser storage. The FlashVMM runtime has no phone-home behavior. See Privacy for the complete policy.
What licensing and support options are available?
Licensing, deployment guidance, and commercial support can be tailored to the needs of your organization. Contact the FlashVMM team to discuss fleet size, operating environment, integration requirements, and support coverage.
For Enthusiasts
What is a microVM?
A microVM keeps the hardware isolation and private guest kernel of a virtual machine while removing legacy device emulation that modern workloads do not need. FlashVM is FlashVMM's high-performance implementation of that model, built for millisecond startup and a small resource footprint.
How is a FlashVM different from a container?
Containers share the host kernel. A FlashVM runs its own guest kernel behind KVM, inside a dedicated process and address space. That gives each workload a VM boundary while preserving the speed and operational simplicity expected from modern application infrastructure.
Can I run FlashVMM on a home server?
Yes. Any Linux x86_64 or aarch64 host with KVM can run FlashVMM, including compact home servers and virtual machines with nested virtualization enabled. It installs as a standalone distribution and is managed directly through the flash CLI.
Does FlashVMM run on Raspberry Pi?
Yes. FlashVMM supports 64-bit ARM systems with KVM and runs on Raspberry Pi 5, including snapshot and restore. It also supports AWS Graviton systems, giving the same FlashVM model a path from compact edge hardware to cloud-scale ARM infrastructure.
What hardware can run FlashVMM?
No specific server brand or accelerator is required. FlashVMM uses KVM on standard Linux hosts and supports x86_64 and aarch64, bare metal, selected nested-virtualization environments, home servers, and Raspberry Pi 5.
How much Linux experience do I need?
If you are comfortable using a terminal, you can work with FlashVMM. The CLI handles VM creation, inspection, networking, snapshots, restore, cloning, and cleanup. Kernel or hypervisor development experience is not required.
What makes FlashVMM distinctive?
FlashVMM combines fast cold starts, instant warm-pool claims, copy-on-write cloning, cross-host workload movement, per-VM resource enforcement, streaming observability, and an MCP-native control plane. It delivers these capabilities in a standalone architecture with one process and one control socket per VM.
Is FlashVMM a good fit for self-hosting?
Yes. FlashVMM provides fast, isolated Linux environments without requiring a hosted control plane or dashboard. It is especially well suited to developers and operators who want direct CLI control, scriptable automation, predictable resource policies, and snapshots they can move between machines.
Where should I start?
Start with installation and the first-run workflow on the Developer page. From there, explore warm pools, snapshots, cloning, migration, and LLM-native operations using the same standalone installation.