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.
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/workSend 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
- Python and TypeScript SDKs: install
mountable-sdkand write the first file. - MCP server: run
mountable mcpover stdio. - Mount from a sandbox: pass the ticket on stdin.
- File operations: rename, hard links, symlinks, and
chmod.