Changelog
All notable changes to kumoba are recorded here. The format follows Keep a Changelog. The four crates (kumoba, kumoba-protocol, kumoba-guest, kumobad) and the kumoba npm package share one version and are released together.
Unreleased
0.3.0 - 2026-11-13
Added
kumoba shell <id>: an interactive terminal inside a sandbox, with arrow keys, tab completion, Ctrl-C, full-screen programs and window resizing. Both the native and the npm CLI support it, and it exits with the shell's status. Piped input works too.POST /v1/sandboxes/{id}/shell: the HTTP route behind it, an upgrade to a small framed protocol documented in the HTTP API reference.
Changed
- The guest agent reports whether it supports shells. Images from earlier releases keep working for everything else and answer a shell request with a clear error.
0.2.2 - 2026-11-13
Changed
- The default image lets
pip installwrite to the system Python (/etc/pip.conf), as the README shows. A sandbox is a disposable VM, so Debian's protection against mixing pip and apt packages only got in the way; non-root users fall back to a user install.
Fixed
scripts/install.shsays why an image could not be unpacked, with the free space it found, instead of exiting silently, and removes the partial image.
0.2.1 - 2026-11-13
Fixed
- The
kumobaCLI no longer panics when its output is piped into a command that exits early, such askumoba | head. Help and JSON output stop quietly with status 0, and a streamedexecorrunthat is cut off exits 141, like a Unix process ended by a closed pipe. The npm CLI behaves the same.
Added
- A README walkthrough (
scripts/walkthrough.sh) runs on a fresh runner after every release, installing from the public installer and npm the way a new user does.
0.2.0 - 2026-11-13
Added
kumobaCLI, built for people and for agents. It has no commands of its own: it reads the daemon's catalog and builds every command, argument check and help page from it. Ships natively with the daemon (install.sh, release tarballs,cargo install kumobad) and through npm (npx kumoba).execandrunexit with the guest command's status.GET /v1/commands: every route with a JSON Schema for its input, so clients and agents can discover the API.POST /v1/runandKumoba.run(): one command in a fresh sandbox that is deleted when it ends.POST /v1/sandboxes/{id}/desktop: starts the desktop and returns a link to a live noVNC view.- Browser previews on a separate loopback listener (
KUMOBAD_PREVIEW_LISTEN, default127.0.0.1:7789), so exposed web apps and the desktop render in a browser while staying off the API's origin. Preview and desktop responses carry a fullurl.
Changed
- With no configuration
kumobadalso listens on127.0.0.1:7788, and on127.0.0.1:7789for previews; either is skipped if its port is taken. - A bare program name in
execorrun(python3) is looked up on the guest'sPATHinstead of being rejected. - The SDK reports an unreachable daemon with the error code
unreachable. - Dependencies:
sha20.11 withhmac0.13,base640.23,libloading0.9, TypeScript 7, vitest 5, and newer GitHub Actions.
Fixed
- Previews no longer wait on a guest server that keeps its connection open: responses are read to their declared length, and plain requests reach the guest as one-shot HTTP/1.0. Page loads through a preview dropped from about 5 s per file to milliseconds.
- Redirects from a preview stay inside that preview: the guest's
locationis resolved with a URL parser and anything leaving the guest origin is dropped. - The desktop's accessibility tree retries while the AT-SPI bus is still starting, instead of failing right after
desktop.start().
0.1.0 - 2026-11-13
Added
- libkrun microVM runtime (
kumoba): boot, exec with streaming output, files, host mounts, snapshot images, secrets that stay on the host, egress allowlists with wildcard domains, intranet allowlists, corporate upstream proxies and an access log of every proxied connection. kumobaddaemon: HTTP API over a Unix socket or loopback TCP with bearer auth, concurrency limit, auto-stop, restart reconciliation, signed preview links, network updates on stopped sandboxes and a paged access-log feed.kumoba-guest: PID 1 agent for guest images with command execution, files, port forwarding and an optional xfce desktop with screenshots, input and a VNC live view.- TypeScript SDK (
kumobaon npm):Kumoba,Sandbox,Files,Desktop,accessLog()async iterator andawait usingdisposal. - Default Debian guest image with Python, Node, Chromium and the desktop, plus an Alpine test image that needs no Docker.
- Sparse disk copies with reflinks where the filesystem supports them.
- Zero-config start: with no environment
kumobaduses~/.kumoba(orKUMOBA_HOME) for images, state, a generated token and its socket, findskumoba-workernext to itself and libkrun in../lib, andnew Kumoba()connects to it with no options. scripts/install.sh: one-line install of the daemon, worker and a prebuiltdefaultortestimage, verified against the release checksums.- Releases ship the four crates, the npm package, host tarballs for Linux x86_64, Linux arm64 and macOS arm64, and prebuilt guest images for both architectures. Every release is installed and booted before it is published.