DreamLake

DreamLake

ML experiment tracking for robotics and embodied AI. Record, store, browse, and search multimodal episode data — video, audio, tracks, logs, and parameters — from one CLI, one Python SDK, and one dashboard.

Install

One command, and there is no runtime to install first. The dreamlake CLI is a single native binary that lives in your home directory and keeps itself up to date.

terminalbash
curl -fsSL https://dl.dreamlake.ai/install.sh | bash

Then open a new terminal and check it worked:

terminalbash
dreamlake --version
What the installer does

Downloads the binary for your platform, checks its SHA-256 against the release manifest, and installs entirely under $HOME:

  • ~/.local/share/dreamlake/versions/<version> — the binary
  • ~/.local/bin/dreamlake — symlink to the active version
  • appends one line to your login shell's rc file if ~/.local/bin isn't already on PATH

No sudo, and nothing outside your home directory. The installer refuses to run under sudo for exactly this reason.

Platforms, release channels, version pinning, troubleshooting, and uninstall steps are in the install reference at the bottom of this page.

Your first episode

The walk-through below takes about five minutes. Every command assumes dreamlake is on your PATH.

Authenticate

terminalbash
dreamlake login

Opens your browser for OAuth device auth and stores a token locally — you only do this once per machine. On headless machines, add --no-browser to get a QR code instead. Point at a self-hosted server with --url <server>.

Upload

terminalbash
dreamlake upload ./run01.mp4 \
  --episode alice@robotics:run-042 \
  --to /camera/front

That single command chunks the file, uploads it to S3-backed storage, registers the asset on the server, and (for video) triggers HLS splitting — the episode is immediately browsable in the dashboard. File type is auto-detected from the extension. Large files are chunked (10 MB parts, 4 parallel workers) and uploaded via S3 multipart, so an interrupted upload resumes where it left off.

ExtensionType
.mp4, .mov, .mkv, .webmvideo
.wav, .mp3, .flac, .aacaudio
.vtt, .srttext-track
.jsonl, .csvlabel-track

List and download

terminalbash
dreamlake list --episode alice@robotics:run-042
dreamlake download --episode alice@robotics:run-042 --from /camera/front -o ./video.mp4

Organize with bindrs and datasets

A bindr is a curated collection of files matched by glob; a dataset groups bindrs into a training-ready unit:

terminalbash
dreamlake create bindr "front-camera" --project robotics@alice --episode "2026/04/*"
dreamlake create dataset "training-v1" --project robotics@alice
dreamlake update dataset "training-v1" --project robotics@alice --add "front-*"

See the CLI Reference for the full create / update / delete / list surface.

Episode syntax

The --episode flag everywhere uses [namespace@]project[:episode]:

ExampleNamespaceProjectEpisode
robotics(current user)robotics—
alice@roboticsalicerobotics—
alice@robotics:run-042aliceroboticsrun-042

Environment variables

VariableDescription
DREAMLAKE_REMOTEServer URL (overrides the stored login)
DREAMLAKE_BSS_URLBSS storage URL
DREAMLAKE_API_KEYAPI token — skips interactive login, for CI

How it fits together

dreamlake CLI  /  Python SDK
    ├── Upload file ──→ BSS (S3 storage, HLS splitting)
    └── Register asset ──→ DreamLake Server (catalog, auth)
                              ├──→ Dashboard (browse, render, share)
                              └──→ Qdrant (semantic search)
ComponentRole
dreamlake CLINative binary — upload, download, collections, artifacts, workflows — own docs
dreamlake-pyPython SDK — video slicing, tracks, vector index
dreamlake-serverFastify API — catalog, auth (JWT), visibility, search routing
BSSS3-backed binary storage with HLS video splitting
DashboardBrowse episodes, render artifacts, manage sharing at dreamlake.ai
QdrantVector index (CLIP embeddings) behind semantic search
LakeshoreQueue-native remote compute — own docs

Explore the docs

Video SDK →

Load, slice, and batch video in Python with lazy, NumPy-style indexing — frames to tensors in one line.

Semantic Search →

Query hours of footage with natural language — CLIP embeddings over 2-second chunks, indexed in Qdrant.

Artifacts →

Push a renderable file, get a live page — versioned, shareable, and safe to delete.

CLI Reference →

Every dreamlake command, versioned with each release — full reference at cli.dreamlake.ai.

API Reference →

The REST surface behind the CLI and dashboard — auth, episodes, nodes, tracks, search, and artifacts.

Architecture →

How the pieces fit: the data model, node tree, auth flow, and upload pipeline.

Lakeshore →

DreamLake's elastic compute fabric — run Python functions on remote workers with a decorator.

GitHub →

The dreamlake-ai org — SDKs, server, skills, and example pipelines.

Ready to go deeper? Jump straight to the Architecture overview.

Install reference

Everything below is the long tail of installing and maintaining the CLI. You do not need any of it to get started.

Supported platforms

PlatformArchitectures
macOS 13+Apple Silicon, Intel
Linux (glibc)x86-64, arm64
Linux (musl / Alpine)x86-64, arm64
Windows 10+x86-64, arm64

32-bit Windows is not supported. Inside WSL, use the Linux command rather than the PowerShell one — you are installing into the Linux side.

Staying up to date

At most once every four hours, a command may start a short detached background process that checks for a new release and installs it; the new version takes effect the next time you run a command. To update right now:

terminalbash
dreamlake self-update
Windows updates are manual

Windows locks a running .exe, so there is no background updater there. Run dreamlake self-update when you want a new version. dreamlake self-update --status reports this under auto:.

self-update, not update

dreamlake update edits bindrs, datasets, and projects. Updating the CLI itself is dreamlake self-update.

Release channels

latest (the default) gets every release as it ships. stable trails by about a week and skips releases with known regressions.

terminalbash
dreamlake self-update channel stable   # switch channel
dreamlake self-update                  # apply it

Pin a version

Asking for an exact version pins it: auto-update stops until you choose a channel again. This is what you want in a CI image or when a release regresses.

Windows (PowerShell) tab: On Windows, pass the target through the script block:

terminalbash
curl -fsSL https://dl.dreamlake.ai/install.sh | bash -s 0.3.0
dreamlake self-update 0.3.0            # or, once installed
dreamlake self-update channel latest   # unpin and resume updates

dreamlake self-update --status shows whether you're pinned.

Turn updates off

VariableEffect
DREAMLAKE_DISABLE_AUTOUPDATER=1No background checks; self-update and install still work
DREAMLAKE_DISABLE_UPDATES=1Blocks every path that changes your version, including self-update and install

Troubleshooting

dreamlake doctor prints where the binary lives, which version the launcher points at, your channel, and the last auto-update result — no network calls, no session started.

command not found after installing. The installer appended to your shell rc but the current shell predates it. Open a new terminal, or:

terminalbash
export PATH="$HOME/.local/bin:$PATH"

dreamlake still runs an old version. Something else on your PATH answers to the same name — usually an npm install of the CLI, or the retired Python console script. The installer warns about this, and doctor names the file under on PATH:. Check with:

terminalbash
which -a dreamlake

Then remove the other one, or put ~/.local/bin ahead of it:

terminalbash
npm uninstall -g @dreamlake/dreamlake-cli     # if it came from npm

This one is worth ruling out first, because it does not look like a failure: the old binary keeps answering and every command appears to work.

From source

For working on the CLI itself:

terminalbash
git clone https://github.com/dreamlake-ai/dreamlake-cli.git
cd dreamlake-cli && pnpm install
pnpm cli --help

Uninstall

Windows (PowerShell) tab: On Windows:

terminalbash
rm -f  ~/.local/bin/dreamlake
rm -rf ~/.local/share/dreamlake ~/.local/state/dreamlake ~/.dreamlake

Add rm -rf ~/.config/dreamlake to also drop your saved logins. On macOS and Linux, remove the # added by the dreamlake installer block from your shell rc; on Windows, drop %USERPROFILE%\.local\bin from your user Path in System Properties → Environment Variables.