Named workspaces
Create a workspace and attach it to a sandbox to preserve selected files between sandbox identities.
with nodus.Client() as client:
client.workspaces.create("research", size_gb=0.1)
box = client.sandboxes.create(
image="python:3.12",
workspace={"name": "research", "mount": "/workspace"},
)
command = box.exec(["sh", "-c", "echo ready > /workspace/progress.txt"])
command.wait()
box.terminate()
One live sandbox can write a workspace. A conflict includes its current holder ID. Termination can return while the final save is pending. Observe the sandbox until it becomes terminated before attaching the same workspace to another sandbox. List workspace metadata with client.workspaces.list() and check last_error and saved_at.
Devboxes automatically attach a workspace with their name. A custom workspace can select another dedicated top-level mount. System directories cannot be used. Workspace contents and application recovery state are separate.
Periodic saves preserve the latest useful archive. An empty folder does not replace an earlier useful archive. Hard spending and lifetime cutoffs preserve the last successful save. They cannot guarantee files written after that save. Files must fit the configured workspace capacity.
Storage billing is disabled unless the deployment has a configured price. The metadata reports disabled_no_approved_storage_rate or metered_subject_to_account_limits. Account and workload spending limits still apply. The asynchronous client exposes the same workspace methods.