Mountable

Showcase

Containers die. The workspace lives.

Two replays of a shared POSIX directory. This page is a dry run: it does not create a filesystem, download data, or start a sandbox.

Dry-run visualization. Playing it does not create a filesystem or call the Mountable API. Sandbox A writes PLAN.md and exits. Sandbox B mounts the same directory, implements the plan, and runs the test. The laptop mounts that directory read-only; a write is rejected.

Sandbox A — planner

Read-write mount, then the sandbox is destroyed.

$ mkdir -p /mnt/work
$ printf '%s\n' "$MOUNTABLE_TICKET" | mountable mount --ticket-stdin --json /mnt/work
{"event":"mounted","path":"/mnt/work","filesystem_id":"k5q2ztr4mvd7wn3xa6jhebcyfu","mode":"rw"}
$ cat > /mnt/work/PLAN.md <<'EOF'
# Adder

Add adder.py with add(left, right) returning left + right.
Add test_adder.py that checks add(2, 3) == 5.
EOF
$ mountable unmount /mnt/work
{"event":"unmounted","reason":"unmount","detail":""}
sandbox A destroyed

Sandbox B — coder

A new sandbox mounts the same directory.

$ mkdir -p /mnt/work
$ printf '%s\n' "$MOUNTABLE_TICKET" | mountable mount --ticket-stdin --json /mnt/work
{"event":"mounted","path":"/mnt/work","filesystem_id":"k5q2ztr4mvd7wn3xa6jhebcyfu","mode":"rw"}
$ cat /mnt/work/PLAN.md
# Adder

Add adder.py with add(left, right) returning left + right.
Add test_adder.py that checks add(2, 3) == 5.
$ cat > /mnt/work/adder.py <<'EOF'
def add(left, right):
    return left + right
EOF
$ cat > /mnt/work/test_adder.py <<'EOF'
class AdderTest(unittest.TestCase): ...
EOF
$ python3 -m unittest test_adder
OK
$ mountable unmount /mnt/work
{"event":"unmounted","reason":"unmount","detail":""}

Linux laptop

The same directory, mounted read-only.

$ mkdir -p ~/review
$ mountable mount --ro --json k5q2ztr4mvd7wn3xa6jhebcyfu ~/review
{"event":"mounted","path":"/home/dev/review","filesystem_id":"k5q2ztr4mvd7wn3xa6jhebcyfu","mode":"ro"}
$ cat ~/review/adder.py
def add(left, right):
    return left + right
$ touch ~/review/notes.md
touch: cannot touch 'notes.md': Read-only file system

Run the same steps yourself

The scripts live in the Mountable CLI repository. Dry-run prints the sequence. A live run needs the CLI, FUSE, and an API key on the machine that mints tickets. Sandboxes receive only a one-time ticket.

python3 examples/showcase/relay.py --dry-run
python3 examples/showcase/kill_switch.py --dry-run

examples/showcase on GitHub. Delete any filesystem you create with --create in the console when you are finished.