v0.14
0.14.0 | 2026-03-28
A major release adding Linux support, a config-driven build system, and the KVM hypervisor backend.
Highlights
Section titled “Highlights”Linux Support (KVM)
Section titled “Linux Support (KVM)”Capsem now runs on Linux via KVM in addition to macOS via Apple Virtualization.framework. The new hypervisor abstraction layer (Hypervisor, VmHandle, SerialConsole traits) enables platform-agnostic VM management. The KVM backend is a ~5,500 LOC embedded VMM using rust-vmm crates with virtio console, block, vsock, and VirtioFS devices.
Release artifacts include .deb and .AppImage packages alongside the macOS DMG.
capsem-builder
Section titled “capsem-builder”A new Python package (src/capsem/builder/) replaces the old images/build.py with a config-driven build system:
- Pydantic models for all guest image TOML configs
- Jinja2 Dockerfile templates for rootfs and kernel (multi-arch)
- Compiler-style validation linter with 12 error/warning categories
- Click CLI with
validate,build,inspect,init,add,audit,new,mcp, anddoctorcommands - 408 tests at 97% coverage
Multi-Arch Asset Pipeline
Section titled “Multi-Arch Asset Pipeline”VM assets (kernel, initrd, rootfs) are now built per-architecture:
- CI builds arm64 and x86_64 in parallel on native runners
- Per-arch subdirectories (
assets/arm64/,assets/x86_64/) - Unified
manifest.jsonwith BLAKE3 hashes for both architectures - SLSA build provenance attestation per architecture
Settings Schema
Section titled “Settings Schema”The settings system is now fully config-driven with Pydantic as the canonical schema source:
- Two-node-type design (GroupNode + SettingNode)
- JSON Schema generation with cross-language conformance tests (Python/Rust/TypeScript)
- Batch IPC commands replace 3 parallel calls with 1
- Settings UI is fully data-driven with no hardcoded group-name checks
Other Changes
Section titled “Other Changes”- Direct
clonefile(2)syscall: snapshot create dropped from 50ms to 3.7ms (93% faster) - Hardlink-based snapshots for cross-platform support
- 30+ FUSE ops unit tests for the embedded VirtioFS server
- VirtioFS security hardening: resource limits, async worker thread, safe deserialization
- Claude Code installed via native installer (curl instead of npm)
- Guest artifacts reorganized from
images/toguest/config/andguest/artifacts/ - Site deployment fixed (npm to pnpm)
- Snapshot MCP no longer hangs (blocking I/O on spawn_blocking)
- Numerous snapshot, vacuum, and telemetry fixes
Patch Releases
Section titled “Patch Releases”0.14.7
Section titled “0.14.7”- Linux build fix —
ApfsSnapshotusedlibc::clonefile(macOS-only) without acfggate, breaking Linux app compilation.
0.14.6
Section titled “0.14.6”- CI build-assets Rust toolchain — v0.14.5 removed
dtolnay/rust-toolchainwhen switching to just recipes, butbuild-rootfscross-compiles the guest agent and needs the musl target.
0.14.5
Section titled “0.14.5”- CI build-assets root cause fix — release workflow only built rootfs, missing vmlinuz and initrd.img. CI now uses
just build-kernelandjust build-rootfsrecipes instead of reimplementing builder commands. - Developer codesign diagnostics —
just doctorruns a four-step codesigning check (Xcode CLTools, codesign binary, entitlements.plist, test sign). Every failure line includes a copy-pasteable fix command._signrecipe andrun_signed.shfail immediately with actionable messages instead of cryptic errors. - Platform guards —
bootstrap.sh,just doctor, and_signdetect Linux and print which recipes are available (test, build-assets, audit) vs macOS-only (run, dev, bench). - Developer docs — getting-started page now covers platform requirements, codesigning validation, and troubleshooting.
0.14.2
Section titled “0.14.2”- KVM virtio_blk split-borrow —
.take()pattern avoids split-borrow in queue_notify. - CI assets/current —
cp -rinstead ofln -s(GitHub Actions strips symlinks). - Guest agent
libc::time_t— replaced deprecated type withi64. - Developer onboarding — bootstrap script,
.dev-setupsentinel,uvcheck in doctor, README prerequisites,dev-startskill.
0.14.1
Section titled “0.14.1”- Builder uses Python blake3 — no longer shells out to
b3sumCLI. - Site pnpm 10 — fixed workspace detection issues.
See the full changelog for details.