Skip to main content
Each Sailbox has a writable state disk. Runtime filesystem APIs operate on that writable disk; checkpoints preserve it across pause, sleep, resume, cloned children, and recovery. The examples below assume a running Sailbox sb.

Write files

Upload bytes or strings into the Sailbox filesystem. Paths must be absolute. Missing parent directories are created by default.
Write several complete files in one call when startup code has many small inputs. write writes one file and can stream a file-like source in Python; write_files holds every file’s contents in memory.
Each file is its own request, up to eight at a time, and every file gets the same options. A batch is not atomic across paths: the first failure stops the batch, files that already completed stay written, writes already in flight finish on their own, and the error names the file that failed. A path may appear only once. Contents are held in memory; use the streaming API for a large source. Pass a mode to set POSIX permission bits. When omitted, writes default to 0o644.
Disable parent creation if you want writes to fail when parent directories are missing:

Read files

Fetch a regular file back as bytes:
Whole-file reads buffer the full file in memory. For larger files, stream chunks instead:

Work with directories

The fs namespace also covers directory work. mkdir creates a directory and any missing parents, ls lists a directory’s immediate entries as structured records (name, type, size, modified time, mode), exists checks a path, and remove deletes a file or directory tree:

Uploading and downloading directories

Every SDK provides directory transfer methods that move whole trees in one call. They ship one compressed archive instead of one call per file, so a tree of many small files transfers quickly:
Entries the transfer does not name are left in place, and a same-named file is replaced; uploaded files preserve their permission bits (the setuid, setgid, and sticky bits are cleared). Only download directories of ordinary files: system trees like /proc or /sys hold files that cannot be read as plain data, and downloading them fails. A file that is being written while the download runs is captured as it is at that moment, the way copying a live file would; download after writers finish for a consistent copy. On Windows, a directory that contains symbolic links cannot be downloaded, since Windows restricts creating them. The Sailbox image must provide tar and gzip, which the default images do.

Persist state with checkpoints

Runtime writes live on the Sailbox state disk. Checkpoint after important writes if you want recovery and future resumes to start from that point:
See Lifecycle for checkpoint, start-from-checkpoint, pause, sleep, and resume behavior.

Runtime files vs image files

Use runtime filesystem APIs for inputs, outputs, logs, generated artifacts, and data that changes per Sailbox. Use Images for packages, source files, and static assets that should be present before the VM boots.