Mountable
By Jiří Puc · Founder, Mountable
  • sdks
  • sandboxes
  • mcp
  • filesystem

One Folder for the SDK, the Sandbox, and MCP

Mountable is one folder for your SDK, your E2B sandbox, and MCP. Seed the files, let a coding agent edit them, and give a reviewer the same folder read-only.

Your backend already has the task files. A coding agent has to edit them inside an E2B sandbox. A reviewer should see the same tree without changing it.

Teams usually stitch together Mountpoint for S3, the S3 API, and IAM. The mount still cannot rename a folder.

Mountable is one filesystem for that job. You get the same files and the same permissions on every interface.

mountable-sdk 0.1.0 covers Python and TypeScript, and the REST Files API writes the same paths. CLI 0.5.0, a FUSE mount, and the stdio MCP server use that filesystem too. The mount runs on Linux and inside E2B.

Three roles, one folder

Your backend seeds the inputs. The coding agent mounts the folder read-write inside E2B. The reviewer mounts the same folder read-only.

Diagram of one Mountable folder. The backend seeds it with the SDK. A coding agent mounts it read-write inside E2B. A reviewer mounts the same folder read-only.
One folder. The backend seeds it. The coder writes. The reviewer only reads.

What the coder does with the files

On that mount the coding agent can rename a folder. It can create a hard link or a symlink, and it can run chmod. Mountpoint for S3 refuses these operations.

The reviewer gets the same folder, read-only

The reviewer mounts with --ro. Writes fail.

E2B Volumes cannot give you a read-only mount. Mountable can, and the mount runs inside E2B.

The API key stays on the backend. The sandbox receives a one-time ticket and mounts with that ticket.

Seed the folder in one snippet

The Python SDK below writes one input file and mints both tickets. The TypeScript SDK has the same calls.

from mountable_sdk import Mountable
 
with Mountable() as client:
    fs = client.filesystem("fs_…")
    fs.write("src/brief.md", "Fix the parser.\n")
    coder = client.create_mount_ticket(
        "fs_…", mode="rw", idempotency_key="job-42-coder")
    reviewer = client.create_mount_ticket(
        "fs_…", mode="ro", idempotency_key="job-42-review")
# printf '%s\n' "$MOUNTABLE_TICKET" | mountable mount --ticket-stdin /mnt/work

Send coder.ticket to the coding sandbox and reviewer.ticket to the reviewer. Each ticket works once. The sandbox guide has the full mount steps.

Reading that folder

When the reviewer reads the tree, downloads cost $0.02/GiB. That is under a quarter of S3's $0.09/GB.

MCP mints the ticket

mountable mcp speaks MCP over stdio. An agent in Claude Code or Cursor can list the filesystem and mint the mount ticket.

It edits the files through the mount. Those are the same bytes the SDK wrote.

Try it