Persistence
Laboratory OS is designed to provide a persistent and portable Open Source AI workstation environment. Move your Laboratory between machines, deploy it to different cloud GPUs, backup to external storage, pause and resume on demand.
Container Storage
By default, all Open Laboratory state lives inside the container’s writable layer — installed apps, downloaded models, settings, and generated outputs. This is fine for short-lived or ephemeral use, but if the container is removed (rather than just stopped), that data is gone.
Durable Persistence with a Volume Mount
To persist state across container removals and re-creations, bind mount a directory from your host into the container at /workspace:
docker run -d --restart unless-stopped \
--gpus all \
--pid host \
--name laboratory \
-e UPLINK_DEVICE_TOKEN='your-device-token' \
-v /your/host/path:/workspace \
openlaboratoryorg/laboratory-os
Or use a named Docker volume:
docker run -d --restart unless-stopped \
--gpus all \
--pid host \
--name laboratory \
-e UPLINK_DEVICE_TOKEN='your-device-token' \
-v laboratory_os_workspace:/workspace \
openlaboratoryorg/laboratory-os
Everything Open Laboratory writes — apps, models, desktop configuration, outputs — goes into /workspace. With a mount in place, you can remove and recreate the container at any time and pick up exactly where you left off.
When to Use a Volume Mount
| Scenario | Volume mount needed? |
|---|---|
| Testing or short-term use | No — container storage is fine |
| Downloading large models | Yes — protect your downloads |
| Installing and configuring apps | Yes — avoid reinstalling each time |
| Moving to a different host | Yes — copy the mount to the new host |
| Updating the Open Laboratory image | Yes — preserves all state through the update |
Moving Between Hosts
Because all state is in /workspace, moving your instance to a different machine is straightforward:
- Stop the container
- Copy the
/workspacedirectory (or named volume) to the new host - Reset or create a device token for the new host, then start the container with the same volume mount. A Tailscale deployment can instead rejoin with an appropriate tailnet auth key.
Your slug, apps, models, and settings are all preserved.
Hydration & Reconnection
When the container restarts, Open Laboratory re-establishes its configured remote
access. Uplink device identity and Tailscale node state live under /workspace,
so the assigned names normally remain stable when you reuse the same volume and
credentials.
Routine container restarts and image updates are therefore safe when /workspace
is mounted. Moving to another host may also require resetting an Uplink device
token or issuing an appropriate Tailscale auth key.
When Laboratory OS boots with an existing /workspace, it rehydrates the
environment automatically. Rehydration includes:
- Recreating tunnel connections and subdomains.
- Installing global apt and pip packages that were installed in the prior Laboratory OS container.
- Setting prior environment variables.
- Ensuring executable paths, such as UV Python binaries, are properly linked.