Open Laboratory Docs
Persistence

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

ScenarioVolume mount needed?
Testing or short-term useNo — container storage is fine
Downloading large modelsYes — protect your downloads
Installing and configuring appsYes — avoid reinstalling each time
Moving to a different hostYes — copy the mount to the new host
Updating the Open Laboratory imageYes — preserves all state through the update

Moving Between Hosts

Because all state is in /workspace, moving your instance to a different machine is straightforward:

  1. Stop the container
  2. Copy the /workspace directory (or named volume) to the new host
  3. 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.