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 --gpus all \
-e UPLINK_API_KEY='your-account-key' \
-v /your/host/path:/workspace \
openlaboratoryorg/laboratory-os
Or use a named Docker volume:
docker run --gpus all \
-e UPLINK_API_KEY='your-account-key' \
-v laboratory-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 - Start the container on the new host with the same volume mount and account key
Your slug, apps, models, and settings are all preserved.
Hydration & Reconnection
If your container is stopped and restarted, Open Laboratory re-establishes the tunnel automatically on startup. Your slug stays the same (the device identity lives in /workspace) — your desktop URL doesn’t change.
This means you can freely stop and restart the container without losing access to your instance. Routine restarts (to update the image, move between machines, reboot a host) are safe.
When the Laboratory OS container boots up, if it detects an existing environment in /workspace it will attempt to “re-hydrate” the container with the environment dependencies. This is an automated proceed at boot, some of the rehydration steps include:
- 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.