Skip to content

Releases: paperclipinc/mitos

v0.5.0

17 Jun 01:46
26e358c

Choose a tag to compare

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

16 Jun 20:44
c5d2b41

Choose a tag to compare

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

14 Jun 21:22
d37d52a

Choose a tag to compare

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 ([...
Read more

sandbox: v0.2.0

13 Jun 17:15
9730119

Choose a tag to compare

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/...
Read more