MCP server: One MCP server.

Kairon

@zyvoraiMCP server · External

Inspect Kairon VMs, network policy and VM-edge flows from an agent. Read-only by default.

v0.10.2Apache-2.0Go
Freeno charge per call

Runs on your machine from its package; the steps are below.

Kairon: real VMs on Kubernetes, no pods pretending
From the README · 1 of 8

What it does

  1. Reads
  2. Writes
  3. High impact

Not assessed yet.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

Runs locally over stdio

This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).

Dockerghcr.io/zyvorai/kairon-mcp:v0.10.2

Run

docker run -i --rm ghcr.io/zyvorai/kairon-mcp:v0.10.2

MCP client config

{
  "mcpServers": {
    "kairon": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/zyvorai/kairon-mcp:v0.10.2"
      ]
    }
  }
}
README20 min read

Kairon

CI MCP Release Go Report Card OpenSSF Scorecard OpenSSF Best Practices License: Apache-2.0 Go

Book a demo 30-day PoC Quickstart

Kairon: real VMs on Kubernetes, no pods pretending

VMs that don't pretend to be Pods.

Real virtual machines, scheduled by Kubernetes, run straight on KVM. No virt-launcher pod per VM, no libvirt in the hot path, no operator zoo. A Machine is desired state, kairon-controller places it, and kairon-node runs it on FluxVM with QEMU, Cloud Hypervisor, Firecracker or FluxVM's own hypervisor.

Zero pods per VM · Four hypervisors, one CRD · eBPF on every VM edge · No silent split-brain · AI agents built in (MCP)

The Kairon dashboard: overview, machines, migrations, snapshots, nodes, network policies and the all-namespaces view

Dashboard tour captured against the local sample-data stack (how), not a production cluster.

Kairon: VMs that don't pretend to be Pods. Measured against KubeVirt v1.9.0: 14x lighter idle control plane, 7.4x faster to SSH for five VMs


What's new

Experimental operations: Kairon Rehearsal tests upgrades on isolated CSI copies. Advanced operations adds health-gated configuration change plans, application recovery verification, traffic/RTT placement recommendations, and incident reproduction with fix verification. Includes runnable scenarios and failure-path tests. VM/CSI and host-isolation hardware qualification is still pending.

New since v0.6.0 (latest tag: v0.10.2; the rows down to incident bundles are new in v0.10.0):

Agent sessions (experimental)An AgentSession is a FluxVM agent session: a sandbox VM with a git workspace, a compiled egress/filesystem/process policy, budgets, checkpoints, live forks and an event ledger, scheduled and quota-counted like a Machine. Commands can wait for an admin's approval; chunked uploads, an interactive shell, credential grants the guest never sees, and the Mac guest's screen. kaironctl session, session_* MCP tools, both SDKs and a dashboard page. Mac nodes on FluxVM 0.4.8+. Guide →
Coming from virtctlkaironctl covers virtctl's verbs: console and VNC (with screenshots), restart/soft-reboot, exports and memory dumps, guest info, SSH keys and passwords, expose, freeze, guestfs, cdrom, create clone, objectgraph, --dry-run -o yaml, wait. CLI →
Self-test: is it all working?kaironctl selftest (or the dashboard's Self-test page) boots a tiny CirrOS VM and proves power, network, hotplug, snapshot-restore and more, with live coloured logs and a PASS / FAIL / SKIP table. deploy-remote.sh --self-test runs it right after a deploy. Guide →
Deploy without building locallydeploy-remote.sh --remote-build copies a small source tarball and compiles on the host, so a laptop needs no Go, no Node and no build cache. Fastest path →
HTTPS by defaultThe dashboard and the VNC console relay serve TLS out of the box (generated or bring-your-own certificate); plain HTTP is a named opt-out. Dashboard guide →
Mac Fabric (experimental)Several Macs as one pool: each publishes its chip, macOS, Rosetta, nested virtualization and Thunderbolt Bridge; spec.apple places vz Machines by them, and a MacNetwork gives Machines on different Macs one private network over Thunderbolt. Run against simulated Macs so far. Guide →
Cross-cluster DR (experimental)A MachineProtectionPlan replicates a group of Machines to S3 and keeps their specs and restore points on a second cluster, with RPO and RTO objectives. kaironctl dr failover brings them up there in dependency order, --planned with nothing lost; kaironctl dr test restores copies into an isolated network while production runs, also on a schedule. Machines keep their VirtualNetwork addresses and DNS names follow the active site through external-dns. Guide →
vGPU profiles and GPU health (experimental)spec.devices[].profile gives a Machine a slice of a GPU (NVIDIA vGPU or MIG-backed profile) instead of a whole one, scheduled by free instances and GPU memory, created when the Machine starts and returned when it stops; unhealthy GPUs are skipped. Guide →
Accelerator profiles (experimental)A cluster-scoped MachineAcceleratorProfile names an accelerator shape (count, vendor or vGPU profile, memory per device, one PCIe root for peer to peer, one NUMA node, an RDMA NIC next to the GPUs); Machines ask for it with spec.accelerators. The profile's status says how many more Machines fit on each node. Guide →
Node maintenance and DRS (experimental)kaironctl node maintenance enter NODE cordons a node, migrates its Machines away, and stops or hibernates the ones with nowhere to go; exit puts everything back. DRS (`-drs-mode recommend
Per-disk I/O QoSIOPS and bandwidth limits on a Machine's root and data disks (io.throttle), with bursts, enforced by QEMU and changed live on a running Machine. Guide →
NVMe-oF storage (experimental)Kairon's CSI driver provisions nvme-tcp and nvme-rdma volumes through the kernel NVMe target with native multipath; raw Block volumes boot Machines in place and attach as data disks with per-disk QEMU I/O. Guide →
Hibernate (experimental)spec.powerState: Hibernated saves RAM and device state to disk and frees the node; resume continues the same boot, on its own node or a compatible one with shared storage. Guide →
Virtual networks (experimental)VirtualNetwork: isolated IPv4 networks routed in eBPF with a Geneve overlay, per-network gateway, egress SNAT and floating IPs. Guide →
Elastic memory (experimental)Run more Machine memory than the node has: guaranteed minimums, a virtio-balloon reclaim loop and a KaironMemoryPressure signal the scheduler respects. Guide →
Topology-aware placement (experimental)NUMA, GPU, NIC and NVMe locality: the scheduler picks the node, exact CPUs, NUMA memory and PCI devices together. Guide →
Incident bundles (experimental)kaironctl diagnose machine --deep: one redacted tar.gz with the Machine's cluster state plus QMP, cgroup, console, dataplane and pcap from its node, and an opt-in guest memory dump. Guide →
Lifecycle, diagnostics and namespaces (v0.9)kaironctl doctor, connectivity test, logs, events, sysdump, config, history/rollback; kaironctl upgrade keeps your previous Helm values. The dashboard has a namespace selector, an all-namespaces Machines view and bulk Start/Stop. Release notes →
v1 API and new dashboardkairon.zyvor.dev/v1 is the storage version (v1beta1/v1alpha1 served, deprecated). The dashboard is redesigned and gains Storage (Atlas), Pools & claims, Images and Backups pages; kairon-ui now listens on :18082. Guide →
Native macOS nodekairon-node registers an Apple silicon Mac as a Node and runs backend: vz Machines through FluxVM. Verified on an M4; multi-Mac clusters not yet. Guide → · Mac cluster →
Developer ecosystem kitPython and TypeScript SDKs, digest-pinned recipes, disposable-VM GitHub Actions, Terraform composition. Kit →
Fleet automation (experimental)Opt-in Redfish fencing, balancing, autoscaling, backup and recovery plans, template claims, usage CSV and a Fleet dashboard. Guide →
Kairon vs KubeVirt benchmarkSame node, same guest, one script driving both; method and raw JSON in docs/benchmarks.
Import from VMwarekaironctl import ova streams an OVA once, reads vCPU, memory and firmware from the OVF, and FluxVM converts and repairs the disk. Guide →
Warm pools and claimsMachinePool keeps booted Machines ready; a MachineClaim binds one in a single reconcile tick, with per-claim egress allowlists. Guide →
VM forkkaironctl fork and the MCP fork_machine tool fork a running Machine through FluxVM. Guide →
Agent sandboxes (experimental)spec.lifecycle pauses idle Machines and wakes them on connect, deletes them after a max lifetime; paused warm pools, per-claim usage, and Sandbox classes in both SDKs. Guide →
BackupsMachineBackup and MachineBackupRestore with guest filesystem freeze, plus Atlas S3 backup jobs for Atlas volumes. Incremental S3 backups with policies and GFS retention (experimental). Guide →
Live disks and NICsHot-attach PVC disks and hot-add or remove extra NICs on running Machines (kaironctl disk, kaironctl nic). Guide →
Tenant fencekairon.zyvor.dev/tenant-fence turns spec.tenant into an east-west deny of other tenants' guest addresses in the namespace. Guide →
Preemption by HaltAn opted-in high-priority Machine that can't be placed halts an opted-in lower-priority one, and it resumes when the preemptor leaves. Guide →
Hotplug survives restartA stop/start boots at the hotplugged CPU and memory; hotplug-persist writes it back into spec. Guide →
Halted resume keeps hotplugResuming a Halted Machine hotplugs its CPU and memory back to the pre-halt size. Guide →
Claims carry the templateA createMachine pool claim gets the template's resources, kernel, cloud-init, NUMA, security, guest agents, TTL and forwards; anything not carried is listed in machineWarnings. Guide →
Daily snapshot schedulesdailyAt: "02:30", stable jitter and maxAgeSeconds retention on MachineSnapshotSchedule. Guide →
CPU-pinning discovery, deployeddeploy-remote.sh --reserved-cpus=0-1 or Helm node.cpuPinning gives kairon-node kubelet's CPU state, so pinnable-cpus is discovered. Guide →
Approval for agent actionsDestructive MCP tools wait for a single-use kaironctl approve. Guide →
Stale evacuationOpt-in: Machines marked evacuate=true are fenced off a node attested dead with kaironctl node fence. Guide →
Image catalog and ISO installsCluster-scoped MachineImage (disk or ISO, pinned by digest), spec.cdroms install media on SATA, blank root disks, and seeding of empty boot volumes. No CDI. Guide →
OCI containerDiskspec.image.source.oci pulls a disk image by digest with streaming per-layer verification. Guide →

Why Kairon

When this happens…Kairon gives you…
Every VM drags a virt-launcher pod, libvirt and a QEMU wrapper behind itNothing per VM but the VM. kairon-node talks to FluxVM's REST API, which talks to KVM.
A migration dies halfway and nobody knows which copy is realNeedsRecovery. An ambiguous commit stops the line and asks a human; it never guesses and never runs two copies.
You need microVMs for CI and agents, but full VMs for databasesOne Machine CRD, four hypervisors: QEMU, Cloud Hypervisor, Firecracker, FluxVM. Pick per Machine with spec.backend.
VM networking means Pod CNI tricks, masquerade and MultusAn eBPF edge on every VM tap: anti-spoofing, DNS and TLS-SNI policy, rate limits, flows, attributed drops and packet capture.
Debugging the control plane means reading a client-go codebaseStdlib-only controller and node (dependency policy). Small enough to read in an afternoon.
Your AI agent needs to see and drive your fleetkaironctl mcp serve: Machines, policies and live network data for Hermes Agent and any MCP client, writes gated behind --allow-write. Also published as the ghcr.io/zyvorai/kairon-mcp image and listed in the MCP Registry as io.github.zyvorai/kairon (v0.10.2) (install from the registry).

Capabilities at a glance: Run, Move, Protect, Automate


The numbers

Kairon vs KubeVirt v1.9.0 on the same node: 14x less idle control-plane memory, 2.9x faster to SSH for one VM, 7.4x faster for five, the same memory per VM

KaironKubeVirt v1.9.0
Idle control plane memory63 MiB905 MiB14x less
1 VM to SSH23.7 s67.6 s2.9x faster
5 VMs to SSH, median24.8 s184.7 s7.4x faster
Memory per VM (5 VMs)660 MiB661 MiBEven: same QEMU, same guest

Same k3s node, same Ubuntu 24.04 image, same 1 vCPU / 512 MiB guest and cloud-init seed, one script driving both, ready meaning the guest's sshd answers. The VM costs the same either way; what you stop paying for is everything KubeVirt puts around it. Method, raw JSON and caveats (including the 10-VM run): docs/benchmarks.


Kairon vs KubeVirt

Kairon vs KubeVirt: the same kubectl and KVM, half the stack in between

Every layer you remove is one less thing to patch, one less log to read and one less process to crash at 2 a.m.

KaironKubeVirt
A VM isA Machine: its own CRD, its own lifecycleA Pod in disguise (virt-launcher)
Pods per running VM01 virt-launcher pod each
Idle control plane, 5 VMs to SSH (measured)63 MiB, 25 s905 MiB, 185 s
Path to KVMkairon-node → FluxVM REST → KVMvirt-handler → virt-launcher → libvirt → QEMU
HypervisorsQEMU, Cloud Hypervisor, Firecracker, FluxVMQEMU via libvirt
MicroVMs and warm poolsFirecracker / FluxVM sandboxes, FluxVM warm pools (24 ms claim measured)Not a target
SchedulingCapacity-aware Kairon placement on real allocatablePod scheduler plus virt extras
Control plane codeGo standard library only (controller, node)Large client-go / controller-runtime surface
VM networkeBPF VM edge: anti-spoof, DNS/SNI policy, rate limit, flows, drop reasons, pcapPod CNI, masquerade/bridge binding, Multus
Network policyMachineNetworkPolicy + NetworkSecurityGroup, optional Cilium syncPod NetworkPolicy
Live migrationmTLS node-to-node prepare/commit/abort with an encrypted data planelibvirt migration inside the virt stack
Ambiguous migration commitNeedsRecovery: no silent split-brainStack-dependent recovery
Packet capture of one VMkaironctl network capture demo --seconds 15Exec into the launcher pod and bring your own tools
AI agentsMCP server built in (kaironctl mcp serve)Not included
Browser consolenoVNC relay with per-Machine allowlists and Kubernetes RBACvirtctl vnc / external UI
Source of truthThe Kubernetes API, nothing elseKubernetes plus virt abstractions
InstallOne Helm chart from OCI, or kaironctl installOperator plus CR, CDI for images
Choose KubeVirt whenYou need its years of ecosystem integrations (OpenShift Virtualization, Harvester) today

The previous layer-stack illustration: docs/assets/kairon-vs-kubevirt.jpg.


What you get

Machines, not Pods

Machine and MachineSet with instance types, NUMA and CPU pinning, Windows guests, PVC and CSI boot, multi-volume virtiofs, CPU/memory hotplug, pause and halt, cloud-init and port forwards. Desired state lives in Kubernetes; the node reconciles it every few seconds. What ships →

bash
kaironctl create demo --image /var/lib/fluxvm/images/ubuntu.qcow2 --cpu 2 --memory 2Gi --backend qemu
kaironctl get machines

Migration that refuses to guess

Cold migration, node evacuation, and secure live migration over mutual TLS with an encrypted data plane. Cordon a node and the controller can evacuate it for you, throttled by MachineDisruptionBudget. When a commit is ambiguous the Machine goes to NeedsRecovery and waits for an operator instead of risking two running copies. Relocating → · NeedsRecovery runbook →

An eBPF edge on every VM

Each VM tap gets FluxVM's eBPF dataplane: anti-spoofing, DNS and TLS-SNI allowlists, rate limits, and drops attributed to a reason (spoof_ip, dns_deny, sni_deny, rate_limit, …). Write policy as MachineNetworkPolicy / NetworkSecurityGroup; see it live in the CLI and the dashboard Network panel; capture packets from one VM in one command. VM edge → · Network fabric →

bash
kaironctl network flows demo --limit 20
kaironctl network drops demo
kaironctl network capture demo --seconds 15 --output demo.pcap

AI agents, safely

Agent plane: AI proposes, Kairon validates. ask and diagnose feed strict compilers and validators, then a hash-chained audit log, then the cluster. Sealed claims, edge Warning events, per-Machine baseline anomaly scoring, cosign image verification, SEV-SNP/TDX attestation and audited MCP write tools

kaironctl mcp serve speaks the Model Context Protocol over stdio. Hermes Agent, Claude, Cursor or any MCP client can list Machines, read policies and pull flows, drops and captures. Power, snapshot, capture, sealed-claim and policy-apply tools only appear with --allow-write, and every write is recorded in a hash-chained audit log first. kaironctl agent ask turns a plain-English request into a validated proposal using any OpenAI-compatible model, and kaironctl agent diagnose ranks why a Machine or migration is stuck; neither applies anything, and no model runs in the reconcile loop. Covered end to end in CI with the official MCP SDK. AI agents → · Agent plane →

Snapshots and recovery

MachineSnapshot, MachineSnapshotRestore and MachineSnapshotSchedule on CSI VolumeSnapshots, with guest-agent filesystem freeze for application-consistent snapshots. VM memory snapshots through FluxVM, and CRD backup/restore scripts for disaster recovery. Snapshots →

Fleet guards and operations

MachineQuota, MachineDisruptionBudget, MigrationPolicy and an opt-in admission webhook. kairon-ui dashboard with SSO, per-operator accounts and an in-browser VNC console. Prometheus metrics and alerts, controller HA leases, opt-in OpenTelemetry spans. Observability → · Security →


The dashboard

Kairon dashboard: Machines table with the inspector open
Overview
Overview: fleet health and node usage
Migrations
Migrations, with NeedsRecovery surfaced
All-namespaces Machines with bulk actions
All namespaces, bulk Start/Stop

Selecting three Machines and stopping them together Switching namespace and filtering the Machines table

More pages: gallery. Screenshots and clips are generated from the sample-data stack in docs/ux, so they show the real dashboard build, not a lab cluster.


How it fits together

Animated: clients talk to the Kubernetes API, kairon-controller places Machines, kairon-node reconciles them into FluxVM Animated Machine lifecycle: Pending, Running, Paused, Halted, Stopped, Failed Animated live migration between two nodes over a mutually authenticated TLS link (Preview) Animated bars: idle control plane memory and time to SSH, Kairon against KubeVirt v1.9.0
New in v0.10.0, animated: agent sessions, idle sandboxes, cross-cluster DR, maintenance and DRS, elastic memory, incremental backups, Mac Fabric Animated: an agent's commands pass through the AgentSession into the sandbox VM; git push waits for an admin, egress to an allowed host passes and an unknown host is refused Animated: a sandbox Machine goes idle, pauses itself and wakes on the next connection Animated: site A replicates to site B, site A is lost, db then web start on site B and DNS follows Animated: a node enters maintenance, Machines migrate or hibernate, DRS rebalances a node under pressure Animated: balloons inflate under host memory pressure down to each Machine's minimum, then deflate Animated: a full backup, two incrementals of changed blocks, and a synthetic full in S3 Animated: Machines scheduled onto Macs by Apple capability, joined by a MacNetwork over Thunderbolt

Two Go binaries and your KVM hosts: kairon-controller, kairon-node, FluxVM and KVM under the Kubernetes API

ComponentPortRole
kairon-controller:32301 health, :8443 webhookPlacement, migration state machine, fencing, snapshots, quotas and budgets
kairon-node:32302 health, :9443 mTLS peer, :8090 consolePer-host agent: FluxVM lifecycle, eBPF policy, live-migration peer, edge Warning events, confidential-capability label
kairon-ui:18082 (HTTPS)Optional dashboard: Machines, migrations, snapshots, Storage (Atlas), Pools & claims, Images, Backups, Network panel, VNC console; see dashboard guide
kaironctl—CLI and kubectl kairon plugin, embedded Helm installer, MCP server
FluxVM127.0.0.1:7788The VMM layer on each host: QEMU, Cloud Hypervisor, Firecracker, FluxVM
mermaid
flowchart TB
  subgraph clients["Clients"]
    cli["kaironctl / kubectl kairon"]
    dash["Dashboard (HTTPS)"]
    agent["AI agents via MCP"]
  end
  clients --> api["Kubernetes API<br/>Machine, MachineMigration, VirtualNetwork, ..."]
  api <--> ctl["kairon-controller<br/>placement, migration state machine,<br/>quota, IPAM, backup policy"]
  api <--> ui["kairon-ui"]
  api <--> node["kairon-node<br/>one per VM host"]
  node -->|"REST on 127.0.0.1"| flux["FluxVM<br/>QEMU, Cloud Hypervisor,<br/>Firecracker, FluxVM"]
  flux --> kvm["KVM + eBPF edge"]
  node <-->|"mTLS peer"| node2["kairon-node on another host"]
  flux --> s3[("S3 backups")]

Full write-up: ARCHITECTURE.md · docs/architecture.md · architecture illustration: docs/assets/readme-architecture.jpg


Quickstart

On a Kubernetes cluster whose VM hosts run FluxVM:

bash
kubectl label node worker-1 kairon.zyvor.dev/capable=true

helm upgrade --install kairon oci://ghcr.io/zyvorai/charts/kairon \
  --version 0.10.2 -n kairon-system --create-namespace \
  -f https://raw.githubusercontent.com/zyvorai/kairon/v0.10.2/charts/kairon/values-production.yaml

curl -fsSL -o kaironctl https://github.com/zyvorai/kairon/releases/download/v0.10.2/kaironctl-linux-amd64
chmod +x kaironctl && sudo mv kaironctl /usr/local/bin/      # or: kubectl krew install kairon

kaironctl create demo --image /var/lib/fluxvm/images/ubuntu.qcow2 --cpu 2 --memory 2Gi

The production profile pins image tags to Chart.AppVersion and turns on the webhook, namespace isolation, network default-deny and migration data-plane TLS. Images: ghcr.io/zyvorai/kairon-{controller,node,ui}, signed with checksums and SBOM.

From your laptop to a bare-metal host, built on the host so your laptop needs no Go or Node, with a smoke test at the end:

bash
./scripts/deploy-remote.sh user@host --remote-build --with-controller --with-ui --with-console --self-test=quick

Without --remote-build the binaries are cross-compiled locally and shipped as static files. Either way the dashboard and the console relay are HTTPS. All flags and the deploy flow →

Then, on any install: kaironctl doctor checks the control plane and kaironctl selftest boots a CirrOS VM to prove it end to end.

From source, kind, or raw manifests
bash
git clone https://github.com/zyvorai/zyvor-kairon.git && cd zyvor-kairon
make docker-build
helm upgrade --install kairon ./charts/kairon -n kairon-system --create-namespace
# or: kaironctl install   (embedded Helm SDK, no helm binary needed)

Raw manifests: kubectl apply -f deploy/crd.yaml -f deploy/rbac.yaml -f deploy/controller.yaml -f deploy/node.yaml, plus deploy/ui.yaml for the dashboard and deploy/rbac-cbt-backup.yaml only if you enable incremental S3 backups.

Requirements

  • A Kubernetes cluster whose VM hosts are Linux with /dev/kvm.
  • FluxVM on each VM host (default 127.0.0.1:7788).
  • For the eBPF edge: a kernel with BTF and cgroup v2, and dataplaneMode: ebpf.
Next stepWhere
First Machine, end to endGetting started
Everything that shipsWhat ships
Every commandCLI reference
Hardware evidenceCompatibility matrix

Operate

bash
# Relocate
kaironctl migrate demo --strategy cold --target-node worker-2
kaironctl migrate demo --strategy live --target-node worker-2 --mode pre-copy
kaironctl evacuate worker-1 --wait

# See the network from the VM's point of view
kaironctl network status demo
kaironctl network drop-reasons demo
kaironctl network identity demo

# Hand the fleet to an AI agent
kaironctl mcp serve                  # add --allow-write for power, snapshot, capture and claims (audited)
kaironctl agent diagnose machine/demo   # ranked causes; adds a model summary when KAIRON_LLM_URL is set

# Dashboard (HTTPS; self-signed unless ui.tls.secretName is set)
kubectl -n kairon-system port-forward svc/kairon-ui 18082:18082   # then https://localhost:18082
kaironctl ui                         # or through the API server, no port-forward

Maturity

AreaStatus
Machine lifecycle, MachineSet, instance types, quotas, budgetsStable
Capacity-aware scheduling, node-scoped watches, controller HAStable
Cold migration and evacuationStable
Secure live migration and NeedsRecoveryPreview, two-host lab run 2026-10-14, both directions on matched QEMU; NeedsRecovery drill passed 5 of 6 runs, one unexplained failure; not yet in nightly CI (COMPATIBILITY)
Adaptive live migration (auto-converge, post-copy switch, zstd)Experimental, adaptive lab cases passed on a two-host lab 2026-10-14, nightly workflow not yet (COMPATIBILITY)
eBPF VM edge, flows, drops, capturePreview, single-host lab green
CSI snapshots with guest quiesceStable
kairon-ui with SSO and VNC consoleStable
MCP server for AI agentsPreview, CI end-to-end with the official SDK
CPU/memory hotplugGrow-only (QEMU)

v0.10.2 is the latest release (a patch on v0.10.1 that fixes the release pipeline; v0.10.1 added the MCP server image and the MCP Registry listing). Two-host live migration ran on a real lab on 2026-10-14 (cold, source failure, controller failover, all three adaptive cases and post-copy source failure pass in both directions on matched QEMU 10.2.1; plain pre-copy under a heavy write load did not converge, and the NeedsRecovery drill passed 5 of 6 runs with one unexplained failure that left a migration in Adopting). There is no live + eBPF run and no nightly CI yet, so it stays Preview. Adaptive live migration stays Experimental until its matrix cases pass on the nightly lab workflow. Honest gaps live in docs/STATUS.md; what comes next is in ROADMAP.md.


Docs

GoalDocument
Getting starteddocs/getting-started.md
What shipsdocs/WHAT_SHIPS.md
ArchitectureARCHITECTURE.md · docs/architecture.md
Developer ecosystemSDKs, templates, CI and integrations
AI agents and MCPdocs/ai-agents.md
Status and gapsdocs/STATUS.md
Hardware matrixdocs/COMPATIBILITY.md
RoadmapROADMAP.md
SecuritySECURITY.md · OpenSSF
ContributingCONTRIBUTING.md

Develop

bash
make test-race && make cover-check      # Go tests with the race detector, coverage gate
make build smoke                        # binaries and smoke test
cd web && npm install && npm run dev    # dashboard UI

Start with CONTRIBUTING.md; the dependency rules are in docs/DEPENDENCIES.md.


Part of the Zyvor stack

ProductRole next to Kairon
KaironVMs on Kubernetes without KubeVirt
FluxVMThe VMM layer Kairon runs on: QEMU, Cloud Hypervisor, Firecracker and its own hypervisor, eBPF VM edge, sandboxes, fork
AtlasStorage: kairon-controller provisions Machine volumes, snapshots and S3 backups through Atlas
MachinaPrivate cloud on plain Linux + KVM: fleet, HA/DRS, Fleet Cloud, native eBPF, Zyra AI
GuestKitPairs with Kairon: in-guest agent, offline inspection and repair, per-container eBPF policy

→ zyvor.dev


Support

Free under Apache-2.0. If it helps you, you can donate any amount you like: https://rzp.io/rzp/utwdYh3. A donation is voluntary and supports development and maintenance. It is not a purchase: it buys no support, SLA, features, priority or license, and it is not tax-deductible (Zyvor AI Labs Private Limited is a company, not a charity). Zyvor Enterprise (supported releases, SLAs, a named contact and enterprise features) is separate: sales@zyvor.dev.

License

Kairon is free and open source under the Apache License 2.0 (see NOTICE): use, modify and run it in production at no charge. That does not change.

Zyvor Enterprise adds what production teams ask for: supported releases, deployment and upgrade guidance, priority incident triage, a named technical contact and 24x7 critical intake. Plans and terms: docs/SUBSCRIPTION-MODEL.md · Pricing · sales@zyvor.dev.

Bugs and feature requests → GitHub Issues. Report vulnerabilities privately to security@zyvor.dev or via GitHub private vulnerability reporting; see SECURITY.md. Contributions: CONTRIBUTING.md.


Ready to retire virt-launcher?

Book a demo 30-day PoC Pricing Contact sales Star on GitHub

Native macOS

Kairon builds and runs natively on Apple silicon and can schedule Machines onto a Mac through FluxVM's vz backend. See docs/macos.md for what is verified and the limits.

Mac mini for home, Mac Studio for a team, MacBook Pro for development

Every Mac becomes a Kubernetes Node: a Mac mini at home, a Mac Studio for a team, a MacBook Pro that comes and goes. Kairon places Machines by allocatable unified memory, FluxVM runs them, and Velora serves private OpenAI-compatible LLM endpoints on the same hardware. A few Mac Studios become a quiet, low-power, on-premise inference cluster.

A private LLM cluster made of Macs

Verified on an Apple M4, macOS 27.2: a Mac registered as a Ready Node, a vz Machine scheduled, booted, SSH, deleted. Not yet verified: multi-Mac clusters, Thunderbolt RDMA. Cluster guide with a multi-Mac example (examples/macos-fleet.yaml), sizing and roadmap, after GK Servis's Mac Studio case study: docs/macos-cluster.md.

Similar modules