Releases: paperclipinc/mitos
Releases · paperclipinc/mitos
v0.5.0
0.5.0 (2026-06-16)
Features
- controller: fleet-observability metrics (husk pod created/lost, node lost, refill latency) (d1629e3)
- controller: fleet-observability metrics (husk pod created/lost, node lost, refill latency) (6b79a92)
- deploy: Helm chart for the mitos control plane (#37) (28b6e8a)
- deploy: Helm chart for the mitos control plane (#37) (fa95761)
v0.4.0
0.4.0 (2026-06-16)
Features
- controller: add NET_ADMIN to husk pod for in-pod egress firewall (23ffe77)
- controller: emit best-effort husk NetworkPolicy (default-deny egress) (4e52c2b)
- controller: ensure husk NetworkPolicy during pool reconcile (795000f)
- controller: thread template egress policy + allowlist into husk activate (1954a03)
- husk-network: complete name-based egress datapath (DNS upstream + SNAT) (8a39a74)
- husk-network: set pod-netns ip_forward via a scoped init container, no node change (a203c6f)
- husk-stub: wire exec netfilter runner + dns upstream flags (aa34340)
- husk: apply in-pod egress filter + DNS proxy at activate (0fd8929)
- husk: carry egress policy + allowlist in the activate control message (347cc26)
- husk: in-pod egress filter orchestration reusing netconf (5640778)
- husk: per-pod DNS proxy for name-allowlist egress (4b98c6e)
- netconf: unconditional cloud-metadata drop in every sandbox chain (381a88f)
Bug Fixes
- ci-runner: grant runner networkpolicies read for the husk-network e2e (db950fa)
- ci-runner: grant runner networkpolicies read for the husk-network e2e (6d95158)
- controller: drop the terminate finalizer when the bound workspace is gone (8e5e772)
- deviceplugin: re-register with the kubelet after it restarts (5bc2d93)
- deviceplugin: start the kubelet.sock watch before registering (08a4045)
- dnsproxy: refuse to pin non-public resolved addresses (DNS-rebind defense) (6b43bcf)
- dnsproxy: refuse to pin non-public resolved addresses (DNS-rebind defense) (b916d75)
- husk-network: bind the in-pod DNS resolver IP to the tap (9febb1a)
- husk-network: enable pod-netns ip_forward via kubelet sysctl, fail open-safe (c9c1616)
- husk-network: guest configures eth0 via rtnetlink, not the missing ip binary (a4a0271)
- husk: enable forkd networking so the template bakes the eth0 NIC (#150) (200e348)
- husk: forkd image needs iproute2 + nftables; re-enable networking; mirror base image (66bacb3)
- husk: husk-stub image needs iproute2 + nftables for the in-pod egress filter (22254e5)
- husk: husk-stub image needs iproute2 + nftables for the in-pod egress filter (1feb8f8)
- husk: readiness probe gates the pod on the dormant control listener (96c5dcc)
- husk: wait for the template rootfs at Prepare instead of crash-looping (04c0f42)
- security: fail closed when a forked VM does not reseed its RNG (#137) (92a04eb)
- security: four hardening fixes (husk SA token, gRPC fail-closed, vsock read deadline, clock residual) (#136) (8977aed)
- security: per-fork rootfs CoW on raw-forkd to stop cross-fork write bleed (#138) (e72bd34)
v0.3.0
0.3.0 (2026-06-14)
Features
- AAAA/IPv6 answers in the name egress allowlist (314104c)
- add --rootfs-cow-dir and --template-rootfs flags to husk-stub (d957c7e)
- add forkd NDJSON exec-stream endpoint and aggregate one-shot exec on it (51a679d)
- add host vsock ExecStream over a dedicated connection (1be44f1)
- add PatchDrive to the husk vmm interface (ea8a46a)
- add per-pool claim-arrival demand tracker (0c8d1ff)
- add pluggable KMS Wrapper with a local AES-256-GCM KEK provider (0c0709f)
- add Python streaming exec callbacks and background process handle (bf7a185)
- add TypeScript streaming exec callbacks and background process handle (3150202)
- add vsock exec-stream frame protocol types (7beb8b9)
- add warm-pool autoscale metrics (size, in-use, desired, scale events, latency) (896d353)
- add warm-pool autoscaling fields to SandboxPool (fa5f9e2)
- add warm-pool desired-count formula with scale-down cooldown (6d7d4d1)
- agentrun CLI command tree and Backend interface (91a9dd8)
- agentrun dev up/down and cluster backend (86485fc)
- agentrun-mcp binary with an HTTP sandbox backend (05b8369)
- agents.x-k8s.io facade controller maps Sandbox to our husk run path (cd3fa21)
- attach volume drives, placeholder at snapshot, rebind per fork (cf44c07)
- autoscale the husk warm pool from claim demand in the pool reconcile (c5f07c0)
- benchstat percentile summarization and result formatting (36c03b6)
- bind a sandbox to a workspace and hydrate/dehydrate its revisions (84aa350)
- bounded CAS cache with LRU eviction and manifest pinning (8d0aaaa)
- bulk workspace tar transfer over vsock and CAS hydrate/dehydrate helpers (041a285)
- capacity-aware bin-packing node selection (6f0e3f6)
- carry the trace id in the revision.created feed event; docs (ced246f)
- CAS transfer interface and HTTP transport for incremental snapshot pull (2f63ee9)
- claim activates a dormant husk pod in place via the mTLS control channel (1be9bb1)
- claims pend on no capacity and fail cleanly after a bounded wait (e1d6728)
- cli: cluster workspace backend (#21) (8dc7289)
- cli: mitos ws create|ls|log|diff|fork|revert|rm|bind (#21) (f0458d4)
- cli: workspace backend interface and fake (#21) (cf738dd)
- clone per-activation rootfs at husk Prepare (328712c)
- cmd/bench fork-exec and exec round-trip latency driver (f47453c)
- complete epic W4 (durable, forkable agent workspaces) prod-grade (ffbcaef)
- controller loads the KEK from --kek-file and injects it into the reconcilers (f2076a2)
- controller owns the per-template encryption key Secret and delivers it (bd9146a)
- controller passes template NetworkPolicy to forkd (44c5703)
- controller wraps the DEK with the KMS and delivers the wrapped DEK over the RPCs (3723040)
- controller: add husk fork-snapshot and remove control clients (d0875c1)
- controller: build fork-child husk pods owned by the SandboxFork (020645f)
- controller: live SandboxFork on the husk pod-native path with snapshot GC (9841e1e)
- controller: mount fork snapshot dir and pin fork child husk pods (8d1ff8a)
- controller: replicate husk PKI secrets into pool namespaces (30128b2)
- controller: replicate husk PKI secrets per pool namespace on reconcile (731982c)
- controller: set husk pod memory limit with headroom (1283946)
- controller: wire husk fork config into the SandboxFork reconciler (11044e4)
- controller: wire memory-snapshot seams behind a flag (#21) (b1d3915)
- CoW-aware memory metering counts shared template memory once (9320294)
- daemon stashes the wrapped DEK and KEK id from the mTLS request (4cfb8b6)
- daemon: cap concurrent streams per sandbox (ae8383c)
- daemon: LLM-legible error envelope with code and remediation (b8f4c02)
- deploy the pod-native default stack (controller husk mode, device plugin, husk-stub image) (5d13cc0)
- deploy: ship the ghcr-pull image pull secret manifest (7186314)
- deploy: stage the guest kernel on KVM nodes via a DaemonSet (ade4725)
- dev overlay deploys a mock control plane for agentrun dev up (a54c778)
- encrypt template snapshots at rest in per-scope LUKS containers (c3d910b)
- engine builds templates from OCI images and runs init in the VM (1cad6a5)
- facade maps Sandbox pause/resume to warm-pool release and fast re-activation (8e1f92f)
- facade maps SandboxClaim with warmpool policy to our fork-from-snapshot claim (e9b21d6)
- facade maps SandboxTemplate and SandboxWarmPool to our template and pool ([...
sandbox: v0.2.0
0.2.0 (2026-06-13)
Features
- AAAA/IPv6 answers in the name egress allowlist (314104c)
- add --rootfs-cow-dir and --template-rootfs flags to husk-stub (d957c7e)
- add forkd NDJSON exec-stream endpoint and aggregate one-shot exec on it (51a679d)
- add ForkRunning to ForkEngine interface and MockEngine (c1366a5)
- add host vsock ExecStream over a dedicated connection (1be44f1)
- add PatchDrive to the husk vmm interface (ea8a46a)
- add pluggable KMS Wrapper with a local AES-256-GCM KEK provider (0c0709f)
- add Python streaming exec callbacks and background process handle (bf7a185)
- add TypeScript streaming exec callbacks and background process handle (3150202)
- add vsock exec-stream frame protocol types (7beb8b9)
- agentrun CLI command tree and Backend interface (91a9dd8)
- agentrun dev up/down and cluster backend (86485fc)
- agentrun-mcp binary with an HTTP sandbox backend (05b8369)
- agents.x-k8s.io facade controller maps Sandbox to our husk run path (cd3fa21)
- attach volume drives, placeholder at snapshot, rebind per fork (cf44c07)
- benchstat percentile summarization and result formatting (36c03b6)
- bind a sandbox to a workspace and hydrate/dehydrate its revisions (84aa350)
- bounded CAS cache with LRU eviction and manifest pinning (8d0aaaa)
- bulk workspace tar transfer over vsock and CAS hydrate/dehydrate helpers (041a285)
- capacity-aware bin-packing node selection (6f0e3f6)
- carry the trace id in the revision.created feed event; docs (ced246f)
- CAS transfer interface and HTTP transport for incremental snapshot pull (2f63ee9)
- claim activates a dormant husk pod in place via the mTLS control channel (1be9bb1)
- claim finalizer reaps the backing VM on delete (a4a2fba)
- claims on lost nodes transition to a terminal NodeLost condition (5f41d75)
- claims pend on no capacity and fail cleanly after a bounded wait (e1d6728)
- clone per-activation rootfs at husk Prepare (328712c)
- cmd/bench fork-exec and exec round-trip latency driver (f47453c)
- configure message on the vsock protocol (180afaa)
- controller calls forkd over gRPC for Fork and ForkRunning (cabc81c)
- controller loads the KEK from --kek-file and injects it into the reconcilers (f2076a2)
- controller owns the per-template encryption key Secret and delivers it (bd9146a)
- controller passes template NetworkPolicy to forkd (44c5703)
- controller PKI bootstrap and mTLS dialing to forkd (26d8209)
- controller wraps the DEK with the KMS and delivers the wrapped DEK over the RPCs (3723040)
- controller: replicate husk PKI secrets into pool namespaces (30128b2)
- controller: replicate husk PKI secrets per pool namespace on reconcile (731982c)
- CoW-aware memory metering counts shared template memory once (9320294)
- daemon stashes the wrapped DEK and KEK id from the mTLS request (4cfb8b6)
- deploy the pod-native default stack (controller husk mode, device plugin, husk-stub image) (5d13cc0)
- deploy: ship the ghcr-pull image pull secret manifest (7186314)
- deploy: stage the guest kernel on KVM nodes via a DaemonSet (ade4725)
- dev overlay deploys a mock control plane for agentrun dev up (a54c778)
- encrypt template snapshots at rest in per-scope LUKS containers (c3d910b)
- engine builds templates from OCI images and runs init in the VM (1cad6a5)
- facade maps Sandbox pause/resume to warm-pool release and fast re-activation (8e1f92f)
- facade maps SandboxClaim with warmpool policy to our fork-from-snapshot claim (e9b21d6)
- facade maps SandboxTemplate and SandboxWarmPool to our template and pool (d0d5fbc)
- forkd activity tracking and ListSandboxes RPC (48a537d)
- forkd delivers claim env+secrets to the guest, strict on real engines (5433dff)
- forkd gRPC requires controller mTLS identity when TLS is configured (9c127aa)
- forkd loads the local KEK from --kek-file and fails closed without it (18ae8e9)
- forkd notifies guests on fork; restore without reseed fails closed (527d8a8)
- forkd pod discovery with capacity heartbeats (706b857)
- forkd reports host memory total and per-template capacity estimates (bf23c94)
- forkd runs Firecracker under the jailer; daemonset drops privileged (f7c51fc)
- forkd runs the DNS proxy and points guests at it for name egress (7b639fb)
- forkd serves its CAS and pulls templates from a peer (1979c4e)
- forkd takes the encryption key from the mTLS request, not the node (eaa341c)
- forkd unwraps the wrapped DEK via the KMS and zeroizes the plaintext (a0f1b26)
- GC reconciler terminates orphan VMs and reconciles after controller restart ([dba061f](https://github.com/paperclipinc/...