Skip to content

The disk

Each session has a 10 GB SQLite-backed disk owned by its Durable Object. It survives WebSocket drops, browser restarts, hibernation, and DO eviction.

Terminal window
$ echo "still here tomorrow" > /home/user/note.txt
# close the tab, come back next week
$ cat note.txt
still here tomorrow

The disk preserves arbitrary bytes, symlinks, stat metadata, and exec bits. Write raw bytes with fs.writeFileSync and read them back unchanged. chmod +x survives, and ./prog honors it. Every inode stores uid, gid, and mode durably, and a process without permission gets EACCES rather than silent success (security). The VFS event bus sends coalesced file changes to the editor and dev servers, which is what keeps Vite HMR working. Each path has a revision watermark, so runtime caches know when to refresh.

The shell, all four runtimes, the editor, box.files in the SDK, and the agent’s tools see the same bytes. A compiled C program can read with fopen("./data.txt", "r") what cat sees.

Process writes stream to the supervisor with credit backpressure. A process with no credit cannot send more. That lets a parallel npm install or an 84,000-file checkout fit inside a 128 MiB isolate. fsync and process exit are durability boundaries, and hibernation does not lose a committed write.

Short-lived runtime paths read bounded, revision-invalidated snapshots for speed. Long-running processes use the live bridge. Every path follows one rule. A read sees the latest committed state or its own unflushed write. Inside the disk explains the machinery.