Overview
Quick Start
Get up and running with the DreamLake CLI in under 5 minutes.
1. Authenticate
# Login via device auth flow (opens browser)
dreamlake login --url http://localhost:10334
# Or for local dev, use --debug to skip login
dreamlake --debug upload ...2. Upload Files
Video
dreamlake upload ./run01.mp4 \
--episode alice@robotics:run-042 \
--to /camera/frontExpected output:
Uploading run01.mp4 (video)
episode: alice@robotics:run-042
path: /camera/front
size: 12.5 MB
parts: 2 × 10 MB
part 1/2 uploaded
part 2/2 uploaded
splitting: queued
✓ Uploaded: /camera/front
bss id: 69df3ca3fde477c8641d3cbb
dreamlake id: 69df3ca8df27a21701fc31d5What happens under the hood:
- File is chunked (10 MB parts) and uploaded to BSS via multipart upload
- Asset is registered in DreamLake Server → creates episode node + folder hierarchy
- DreamLake Server returns a presigned Lambda URL
- CLI triggers HLS splitting via the presigned URL (no BSS auth needed)
- Lambda segments the video into HLS chunks in the background
Audio
dreamlake upload ./mic.wav \
--episode alice@robotics:run-042 \
--to /microphone/frontLabels
dreamlake upload ./detections.jsonl \
--episode alice@robotics:run-042 \
--to /labels/yoloText Tracks (Subtitles)
dreamlake upload ./captions.vtt \
--episode alice@robotics:run-042 \
--to /subtitles/enAll types follow the same flow — file type is auto-detected from extension.
3. Browse the Node Tree
After uploading, the folder hierarchy is:
/ (project root)
└── run-042/ (episode node)
├── camera/
│ └── front/
│ └── run01.mp4 (video leaf)
├── microphone/
│ └── front/
│ └── mic.wav (audio leaf)
├── labels/
│ └── yolo/
│ └── detections.jsonl (label leaf)
└── subtitles/
└── en/
└── captions.vtt (text-track leaf)Each file is a leaf node in the tree. Folders and episodes are browseable via the GET /nodes/children API.
4. List Assets
dreamlake list --episode alice@robotics:run-042
dreamlake list --episode alice@robotics:run-042 --type video5. Download
dreamlake download \
--episode alice@robotics:run-042 \
--from /camera/front \
-o ./video.mp4Episode Syntax
The --episode flag uses the format [namespace@]space[:episode]:
| Example | Namespace | Space | Episode |
|---|---|---|---|
robotics | (current user) | robotics | (none — space-level) |
alice@robotics | alice | robotics | (none — space-level) |
alice@robotics:run-042 | alice | robotics | run-042 |
alice@robotics:2026/q1/run-042 | alice | robotics | 2026/q1/run-042 |
Without an episode, assets are uploaded to the project root (not under any episode node).