Zyvor Ephemera v0.1.0
Zyvor Ephemera v0.1.0
First tagged release. A disposable-VM control plane over QEMU/KVM, Cloud Hypervisor, and
Firecracker, with real, hardware-verified support for the full deferred-features list this
project set out with, plus the original MVP scope.
Every feature below has been booted/tested against real KVM hardware (and, where noted,
against a real external cluster) — not just compiled. See the README for full detail; this
is a summary.
Core VM lifecycle
VmBackendtrait over QEMU (QMP), Cloud Hypervisor (ch-remote), and Firecracker
(JSON config + HTTP-over-UDS), with a unified create/start/stop/pause/resume/delete API.- Vsock guest agent (
ephemera exec) — no SSH, no network path required — over QEMU's native
AF_VSOCK and a UDS proxy for Cloud Hypervisor/Firecracker. - "auto" backend selection based on what a request/config actually supplies (kernel, firmware).
- TTL reaper, warm VM pools (pre-booted + paused, claimed at near-resume speed).
Storage
- qcow2 CoW overlays (QEMU) and raw reflink clones (Cloud Hypervisor/Firecracker) by default.
- Pluggable backends: LVM thin snapshots, NBD-exported disks, and Ceph RBD — all three verified
booting real guests; Ceph RBD against a real, live Rook Ceph cluster. - Image catalog: named, checksummed, Ed25519-signed base images with full CRUD (add/remove/
rename/clone/export) via CLI and REST.
Isolation and resource control
- Firecracker
jailersupport (chroot, uid/gid drop). - Real per-VM network namespaces (veth + NAT + internal bridge), not just a shared bridge.
- cgroup v2 resource control across all three backends: CPU/memory/IO/pids/cpuset limits,
freeze/thaw, PSI pressure, usage stats. - Bearer-token REST API auth/RBAC (admin/read-only) and an authenticated guest-agent protocol.
- Admission policy: max vCPU/memory/disk/TTL, allowed backends, allowed image directories.
Multi-host and Kubernetes
ephemera-kube: aDisposableVmKubernetes CRD + node-local operator, verified end to end
against a real k3s cluster (finalizer-driven delete, self-healing recreation on out-of-band
VM loss).ephemera-agent: a distributed node-agent — central fleet registry + per-host heartbeat
client with load-aware placement — verified across two real, physically separate hosts.
Observability and ops
- Prometheus
/metricsendpoint; streamingGET /v1/vms/{id}/logs. scripts/bootstrap-host.sh/scripts/deploy-remote.shfor one-command host setup and
SSH-based deployment.- A dozen real-hardware regression scripts under
scripts/test-*.shcovering networking,
lifecycle, cgroups, jailer, warm pools, auth, the image catalog, storage backends, the
Kubernetes operator, and the distributed fleet agent.
Known gaps (see README "Production changes I would make next")
- NUMA/GPU/VFIO-aware scheduler placement — no suitable multi-socket/GPU hardware was
available to verify this against. - A Windows guest path (UEFI, virtio-win, sysprep/unattend) — no licensed Windows image was
available to verify this against. - Full snapshot/restore of VM state (as opposed to the already-implemented warm pools).
- Packaging
ephemera-kubeas an actual container image/daemonset manifest.
Depends on the sibling guestkit project as a path
dependency.