Skip to main content
Use a versioned file system when many agents need the same files at a stable path. Put operating manuals, skills, configs, test fixtures, or binary tools in a file system. Update it from a laptop, CI job, or backend service. Agents mount it read-only. When an autosave checkpoint or permanent snapshot commits, following mounts refresh changed paths automatically.

Pattern

  1. Store shared files in a versioned file system.
  2. Publish updates from outside the sandbox with tl fs push.
  3. Mount the file system into agents as a read-only directory.
  4. Follow the file system for automatic distribution, or pin a permanent snapshot for fixed releases.

Create an Asset File System

Keep the layout simple and stable:
Agents can refer to paths like /opt/agent-assets/manuals/operator.md, /opt/agent-assets/skills/research/SKILL.md, or /opt/agent-assets/bin/validator.

Publish From Outside a Sandbox

The producer does not need a sandbox, and it does not need a mount. Push a directory and create a permanent snapshot for the release:
Pushing the same directory again uploads only what changed, the right shape for a CI job or release service that republishes on every change. Pass -m on the changed push that should create a permanent snapshot; without it, the push creates an ephemeral autosave checkpoint. A push with no changes is a quiet no-op. Pushes honor .gitignore, preserve symlinks, and preserve executable bits on regular files. A file system has no special .git handling: only .gitignore governs what is excluded.

Mount Into Agents

Mount the file system read-only at a predictable path with the sandbox mount API’s per-mount read_only option (see Mount Filesystems):
New sandboxes read the current state. Running following mounts refresh as the shared timeline advances, so updated manuals, skills, configs, and tools appear without rebuilding sandbox images. Agents should write outputs to a separate writable mount. Keep shared assets read-only so every agent sees the same source files.

Version Releases

Use a permanent snapshot when a run must be reproducible. The -m push above already created one; find its id under Snapshots in tl fs history agent-assets and pin the mount to it:
A pinned mount requires ro and never follows the file system: agent-assets keeps advancing for the following fleet while every pinned run keeps serving exactly the release snapshot. Recent autosave IDs cannot be pinned — only permanent snapshots can — so a release anchor never expires. Deleting a release snapshot while sandboxes still pin it is refused with a 409 naming the pin count. Pins work at creation, on warm-pool claims, and on runtime attach, in every SDK — see Pinned mounts for the Python, TypeScript, and HTTP forms. If a release needs its own file-system name — one you might promote or edit later — fork the file system at the release snapshot instead. A fork is metadata-only, sharing the immutable content, and stays fixed as long as nothing writes to it:
If you need named release channels (stable, canary) that you advance deliberately, back the assets with a Git repository and use branches as channels. That’s the surface built for explicit publication.

Binary Tools

Put tools under a stable directory such as bin/ with the executable bit set, and push:
Agents can call the tool directly:

Choose a Mount

Next Steps

Read-only Mounts

Choose between following the file system and pinning a permanent snapshot.

File System Mounts

Give agents a separate place to write outputs.