Mantle

Remote development sessions · release 0.3.1 · early

Run a coding agent’s session on a remote Linux worker.

Mantle starts Claude Code, Codex or a command you declare, its repositories and its toolchain inside a Substrate sandbox on a Linux worker on AWS or KubeVirt. Your laptop renders the terminal; builds use the worker’s CPU. Detach, and the agent keeps running.

Linux x86-64 laptop · AWS EC2 or KubeVirt worker · Apache-2.0

laptop / mantle
$ mantle worker up
$ mantle start mantle.yaml

# Ctrl-] then d: detach; the agent keeps running.
$ mantle attach my-project
$ mantle status my-project

# Stop the agent, keep the workspace.
$ mantle stop my-project
The terminal is a view; the session lives on the worker.

What Mantle is

One session, placed on a worker.

A Mantle session is one agent, one workspace with its Git repositories, and one toolchain. Mantle runs the whole session on a remote Linux worker, not single build commands. The source of truth during the session is the remote workspace; publish work with Git from inside the session.

The architecture page shows which layer owns what. The security model lists what the sandbox does and does not protect against.

Early release.

Release 0.3.1 runs on Substrate 0.16.1 and is checked by 508 native conformance scenarios with controlled external IO. Codex attachment, confined builds and gateway refusals were observed on a live KubeVirt worker for 0.1.2 to 0.1.4, on Substrate 0.7.10. Installation from the published 0.3.1 assets, any run on a live worker with Substrate 0.16.1 and a command session on a live worker have not been run. Device login, authenticated model and tool turns, token refresh and a 0.2.0 run on a live worker are not verified end to end. A 0.2.0 worker cannot be used with 0.3.1: see upgrading from 0.2.0. See what is verified.

Requirements

What you need.

Install

Install a verified release.

Download all four 0.3.1 assets into one empty directory, check them against the manifest, then let the bundled verifier install the laptop tools.

mkdir mantle-0.3.1 && cd mantle-0.3.1
for f in manifest.json SHA256SUMS \
    mantle-0.3.1-x86_64-unknown-linux-gnu.tar \
    mantle-0.3.1-x86_64-unknown-linux-musl.tar; do
  curl -fLO "https://github.com/beyond10x/mantle/releases/download/0.3.1/$f"
done
jq -r .source_commit manifest.json   # must be the commit tagged 0.3.1
jq -r '.artifacts[] | "\(.sha256)  \(.name)"' manifest.json | sha256sum --check
mkdir bootstrap
tar --extract --file mantle-0.3.1-x86_64-unknown-linux-gnu.tar \
  --directory bootstrap --no-same-owner bin/mantle-release
./bootstrap/bin/mantle-release verify --manifest "$PWD/manifest.json"
./bootstrap/bin/mantle-release install --manifest "$PWD/manifest.json" \
  --prefix "$HOME/.local/mantle"
export PATH="$HOME/.local/mantle/bin:$PATH"

This installs mantle, mantle-release and mantle-acceptance. The worker helpers stay in the musl archive; extract them for the first worker up:

mkdir -m 0700 worker-stage
tar --extract --file mantle-0.3.1-x86_64-unknown-linux-musl.tar \
  --directory worker-stage --no-same-owner \
  bin/mantle-egress bin/mantle-launch bin/mantle-worker

These commands have not yet been run against the 0.3.1 assets. The same commands, naming 0.2.0, were run against the published 0.2.0 assets on 2026-10-29: checksums OK, verify and install exit 0, mantle --version printed mantle 0.2.0. What each step proves, and the source build, are on Releases and verification.

First session

From a manifest to a terminal.

  1. Configure the worker

    Copy examples/config.toml to ~/.config/mantle/config.toml, choose provider = "aws" or "kubevirt" and replace every placeholder. For Claude Code, set claude.token_command to a command that prints your token. Field reference: configuration.

  2. Describe the session

    Save as mantle.yaml. For Codex, set kind: codex and auth: chatgpt-device (agent kinds).

    apiVersion: mantle.beyond10x.dev/v1alpha1
    kind: Session
    metadata:
      name: my-project
    workspace:
      repositories:
        - name: mantle
          repository: https://github.com/beyond10x/mantle.git
          ref: main
          mount: mantle
    agent:
      kind: claude-code
      cwd: /workspace/mantle
  3. Bring up the worker and start

    mantle worker up --binaries "$PWD/worker-stage/bin"
    mantle start mantle.yaml

    The first worker up creates the VM, installs Substrate 0.16.1 (release 0.2.0: 0.7.10), the Rust 1.97 toolchain, Claude Code 2.1.287, Codex 0.153.4 and the Mantle helpers, and checks Substrate’s facts. start clones the repositories into the workspace, starts the agent and attaches. Press Ctrl+], then d, to detach.

  4. Come back, stop, clean up

    mantle attach my-project
    mantle stop my-project            # agent ends; workspace kept
    mantle destroy my-project --yes   # workspace deleted
    mantle worker down                # VM stopped; data volume kept

    All commands: operations. An AWS worker stops itself after two hours below 2% average CPU unless brought up with --no-idle-stop.

The worker steps are not re-run for each documentation change. The last recorded live runs are listed under what is verified.

Documentation

Where to read next.

Architecture

Laptop, Mantle, Substrate and worker, and what each owns.

Configuration

The configuration file and every manifest field, with defaults and bounds.

Operations

Commands, retained workspaces, profiles, doctor, automation, acceptance and offline upgrades.

Security model

Network allowlist, credentials, recording, and what the sandbox does not cover.

Release history

0.1.0 to 0.3.1, compatibility changes and recorded evidence.