Mantle

Release history

What changed in each release.

Newest first. Each release’s notes and assets are on GitHub releases; a short list is in CHANGELOG.md.

current

0.3.1: the first published 0.3 release.

Not yet verified for 0.3.1: installation from the published assets and any run on a live worker with Substrate 0.16.1.

tagged 2026-10-29, not published

0.3.0: Substrate 0.16.1, command sessions.

Upgrading from 0.2.0

A 0.2.0 worker runs Substrate 0.7.10, and the 0.3.0 CLI and helpers cannot use it. The 0.3.0 Substrate SDK refuses a daemon that does not advertise substrate-wire/0.25.0; 0.7.10 advertises substrate-wire/0.17.0. mantle doctor fails its live Substrate version check, and mantle worker upgrade --check reports incompatible; --apply reports the same and changes nothing.

No Mantle command moves an existing worker to Substrate 0.16.1. Cloud-init installs the daemon when mantle worker up creates the VM; on an existing VM, worker up starts it and does not replace the running daemon. Sessions on 0.3.0 need a new worker created by the 0.3.0 mantle worker up. Keep the 0.2.0 CLI for sessions on a 0.2.0 worker, and save wanted work from its workspaces before you retire it. Substrate’s state store upgrade is one-way: earlier daemons refuse a store that 0.16.1 has stamped.

Tag 0.3.0 exists and its tagged-source CI passed, but it has no GitHub release and no published assets: the upload was refused because the binaries named the CI runner’s home directory. Install 0.3.1 instead.

Not yet verified for 0.3.0: any run on a live worker with Substrate 0.16.1 (doctor, Claude Code, Codex or command sessions), and the upgrade path above, which is read from the code. The integration source records 508 native scenarios passing in the coverage ledger.

2026-10-03

0.2.0: retained workspaces, verified bundles.

Tagged-source CI passed all 499 conformance scenarios, the static worker builds and the bundle verification; the publisher checked the four uploaded asset digests and the remote tag. Source commit 54710558ebe096a8e5faf98bbb430ff7f9eaa17e. Release · what is verified.

2026-10-03 · source only

0.1.4: release and acceptance records.

Integrates the final 0.1.3 release and acceptance records and refreshes the documentation. Runtime behaviour is unchanged from 0.1.3: attachment-readiness handshake, Substrate 0.7.10’s bounded output queue, pinned Codex 0.153.4. After receiving the corrected versioned CLI and isolated profile command, the operator confirmed that attachment worked; this is an operator statement, and full authenticated lifecycle qualification remains incomplete.

0.1.4 stop destroys the workspace.

In 0.1.4, mantle stop NAME stops the agent and deletes its workspace, including Codex’s auth files. 0.1.4 has no restart or destroy. Save wanted work remotely before using that release’s stop, and never use it as an upgrade step for a workspace you need.

Upgrading a 0.1.4 worker

Upgrade the laptop CLI, the worker launcher and the Substrate runtime together. Check mantle list and mantle status NAME, preserve wanted project changes and workspace data, and plan maintenance before replacing a running daemon: restarting Substrate can interrupt its executions. mantle worker up starts services but does not restart an already running older daemon, and defers changed shared binaries while services are active, so running it again does not prove the worker has the compatible runtime. Verify installed and running versions after maintenance, or provision a separate worker for new sessions. From 0.2.0 on, use offline upgrades.

Build the 0.1.4 CLI and static worker binaries from the 0.1.4 tag; the release has source archives only.

2026-10-03 · source only

0.1.3: attachment startup and sustained output.

A production Codex attachment had failed with session.output-backpressure. 0.1.3 waits for the terminal client to be ready before replaying launcher output and adopts the signed Substrate 0.7.10 daemon with its exact SDK revision. A temporarily full output queue now waits up to one second per frame for its consumer. Queue and output limits are unchanged and terminal recording policy is unchanged; a stalled consumer can still end an attachment with session.output-backpressure.

Evidence: a local, confined synthetic test delivered the full 262,144-byte replay twice through real PTYs, with the exact keyboard reply and restored terminal settings, and reattached to the same agent; that run’s final workspace-destroy call returned operation.outcome-unknown, so its command exited 1, and cleanup was confirmed separately (log). On an isolated KubeVirt worker with the signed Substrate 0.7.10 daemon, two real Codex 0.153.4 attachments through 100×50 PTYs ran 12 seconds each and detached with exit 0; the second reused the same agent, and existing workers and sessions were preserved (record). These establish transport behaviour, not visual screen correctness, device login or authenticated model and tool use.

2026-10-02 · source only

0.1.2: native builds inside the sandbox.

New agent and mantle exec requests select gcc as the Rust linker and C compiler and g++ as the C++ compiler; Ubuntu’s cc alternatives resolve outside the confined mount set. Filesystem and network boundaries are unchanged. This still holds in 0.2.0.

Evidence on a live KubeVirt worker: a confined cargo check of a package with native dependencies exited 0 (62.76 s on the worker, 0.13 s of laptop CPU); two Codex workspaces passed marker-isolation checks; TLS to OpenAI through the gateway worked; an unlisted destination and direct egress were refused. These were supplementary commands, not authenticated model-issued tool calls (audit). In this release mantle exec could still exit 0 after a remote failure; 0.2.0 fixed that.

2026-10-02 · source only

0.1.1: static worker build fix.

Fixes a GNU/musl statfs field type mismatch in the static worker build, keeping the verified-tmpfs requirement for volatile diagnostics. CI now builds all three static worker binaries. 187 Rust tests and 336 native scenarios passed.

2026-10-02 · source only

0.1.0: Codex beside Claude Code.

Manifests select pinned Codex 0.153.4 with ChatGPT device login; Claude Code stays available. Both agents use the existing Substrate terminal transport, so Codex no longer waits for a non-recording capture feature. Codex auth and conversation files stay in its private workspace home, diagnostics on verified tmpfs, launcher replay in memory. Workers are provisioned independently of Claude credentials, the gateway admits the two Codex destinations, and terminal attachments stay cancellable under backpressure. Device login, authenticated turns, token refresh and lifecycle parity were not verified.