DreamLake

Release notes

Per-version changelog for the @dreamlake/lakeshore CLI. Pre-1.0, so minor bumps may include breaking changes — each release flags those under Changed.

Dates

Entries below 0.1.16 carry the dates from the original changelog. The 0.1.16 and 0.2.0 entries are reconstructed from the release commits and are listed without a date rather than with a guessed one.

0.2.0

Added

  • lakeshore tui — an Ink terminal dashboard over Workers / Queues / Invocations / Storage, with per-item action hints rendered inline and dispatched from the same table. Aliases dashboard and top. See TUI dashboard.
  • lakeshore worker start / worker once — supervise a native Python queue worker on the local machine (python -u -m dreamlake.lakeshore.daemon). Omitted flags are deliberately kept off the child argv so the module's own LAKESHORE_* env fallbacks stay authoritative. Added Bun runtime support to the bin shim.
  • lakeshore dreamlake — the DreamLake data-plane group ported from the Python CLI: login / logout / profile, upload / download / list, create / update / delete for bindrs and datasets, video, artifact, and vectorize. It uses its own servers and its own credential store under ~/.dreamlake/.
  • lakeshore storage — S3-compatible storage entries: add (with --provision to create the bucket), list, show, update, remove --purge, presign, and credentials (STS). Direct flags for the common config fields (--bucket, --region, --prefix, --endpoint, --creds) plus pass-through for anything else. <namespace>/<name> syntax works in every storage subcommand.
  • lakeshore code push / code list — archive the current git tree and upload it to a storage entry, deduped by (remote, commit). Default storage name is code-staging.
  • lakeshore admin — tokens create / list / revoke and namespace create / list / delete. Every subcommand requires LAKESHORE_ADMIN_TOKEN.
  • Compose daemon-group fields — setup (bash snippets), startup (Python-env script), python, and mounts in lakeshore.yaml.

Changed

  • host_setup → setup in the compose daemon-group schema.
  • Mounts are per daemon group in the compose runConfig, not project-level.

Fixed

  • S3 PUT uploads are buffered, not streamed — S3 rejects Transfer-Encoding: chunked.
  • mounts add --kind help now lists all ten kinds the server accepts: nfs, samba, ftp, sftp, s3, s3fs, google_drive, dropbox, bind, configmap.
  • Server-side hint fields on errors are surfaced in CLI output, and the token create login hint includes --namespace.

0.1.16

Added

  • lakeshore queues — the queue CRUD surface: add, ls, show, patch, archive, unarchive, drain, rm, plus events (the elasticity controller's audit trail) and stats (current daemon / utilization / pending signals). daemon launch --queue and daemon update --add-queue / --remove-queue plumb membership through Worker.queues.
  • Compose — lakeshore up / down / ps / status / logs, reading a lakeshore.yaml (-f to override). Stateless: desired state comes from the file, current state from the control plane on every run. See Compose.
  • lakeshore exec --queue <name> — skip the daemon picker and let the control plane route the command to an eligible queue member.

Changed

  • Lanes were replaced by queues. The lanes CLI surface is gone; Worker.queues is the membership field.

Fixed

  • daemon update resolves a label to a worker id before PATCHing queue membership.

0.1.15 — 2026-05-22

Added

  • lakeshore exec <cmd> — top-level shorthand. Pops an interactive picker over the daemon list (freshest-first) and runs the command on the chosen daemon.
  • Name resolution on lakeshore daemon exec — the <daemon> arg accepts a worker id, a label (set by daemon launch --name), or a machine_id. ObjectId-shaped strings skip the lookup. Duplicates report the candidates and ask for --id <id>; --id forces literal-id mode.
  • lakeshore daemon install --binary <path> — rsyncs a local nymph binary to the SSH host instead of downloading a release. Mutually exclusive with --nymph-base-url. ELF-validated to reject Mach-O.
  • lakeshore run <script.py> — pipes a local Python file to a remote python3 - over the exec channel. Picker if no --daemon.
  • lakeshore nymph push <file> / nymph list — uploads a hashed nymph binary to the control plane (admin-authed) so debug-fleet daemons can OTA without cutting a release.
  • No -- separator on exec / daemon exec. passThroughOptions() means CLI-side flags go before the daemon argument and everything after it is the remote command.

Changed

  • POLL_WINDOW_S 60 → 25 — fits under Heroku's hard 30-second router cap (H12). Long-poll cycles now land under the limit.

Fixed

  • Exec stdin bytes weren't reaching the daemon. Storage-vs-wire mismatch in the control plane (stdin_b64: string on the ExecJob row vs stdin: Vec<u8> on the daemon's ExecBody). The transform now decodes base64 → bytes at the poll-pop boundary.
  • daemon exec <label> 500'd during name lookup. The control plane's prisma.worker.findUnique({where:{id}}) rejected non-ObjectId strings as malformed; CLI-side name resolution pre-resolves to the canonical id.

0.1.14 — 2026-05-21

Added

  • daemon exec <id> <command> — run an arbitrary command on a daemon with stdin / env / timeout / long-poll. Returns stdout, stderr, and the exit code.
  • daemon launch --count N — parallel fleet launches with a progress bar; bounded concurrency plus retry on AWS RequestLimitExceeded.
  • daemon launch --name <name> and daemon.name in .lakeshore for human-friendly labels.
  • daemon.capacity in .lakeshore — per-project instance-type override that flows through daemon launch.
  • daemon launch-log <id> — fetch cloud console output for boot-time debugging (EC2 only).
  • .lakeshore project config — a local file declaring project-level daemon launch / setup defaults, consumed by daemon launch. Walks up from cwd and stops at the git root; .lakeshore.local layers on top.
  • daemon install improvements — runs as the installing user, adds the user to the docker group, suppresses TTY warnings, 4-step progress bar.
  • Picker polish — hashed tag colors for stable visual identity, expand-on-→, SLURM / Kube / Docker entries visible alongside cloud providers.

Changed

  • daemon ota → daemon update — renamed for clarity, with new --all and --prefix <pattern> flags for bulk updates. ota survives as a hidden, deprecated alias that still requires --version; new scripts should use daemon update.
  • daemon kill — terminating the cloud instance is now the default (opt out with --no-terminate); the --provider flag was dropped; bulk kill via --prefix <pattern> + --yes.

0.1.13 — 2026-04-18

Added

  • --watch on daemon list / daemon show — live refresh in the terminal, Ctrl-C to exit. The value is optional; bare --watch means every 2 seconds.

0.1.12 — 2026-04-15

Added

  • daemon hibernate / daemon ota / daemon target-version — remote-control subcommands wired end to end through the control plane and the nymph daemon.
  • --watch on daemon and jobs list / show (initial cut).

0.1.10 — 2026-04-01

Added

  • Mounts CRUD — lakeshore mounts add / list / show / update / remove for nfs, samba, ftp, sftp, s3, s3fs, google_drive, dropbox, bind, and configmap. Server-side source of truth; the CLI writes metadata only. See Mounts.

Fixed

  • daemon install re-anchored as a subcommand of daemon (it had been accidentally chained off show.action()).

0.1.9 — 2026-03-15

Added

  • One-command daemon lifecycle — lakeshore daemon install <ssh-alias> SSHes to the host, drops the nymph binary, registers it, and waits for the Worker row. Pair with daemon kill <id> and daemon cleanup --older-than <duration> to prune stale rows. See Daemon lifecycle.
  • Interactive provider editor — lakeshore providers edit opens a two-step picker (provider → action) for hide / unhide / soft-delete / restore. providers list --hidden --deleted --all widens the view. See Providers.
  • Cloud-config auto-detect — lakeshore aws discover and lakeshore gcp discover enumerate profiles already on your laptop; providers add --from-aws-profile <name> / --from-gcloud-config <name> seed credentials and region in one step. See EC2 Provider and GCE Provider.
  • SSH picker — lakeshore ssh discover marks entries with local-only directives stripped and aliases already on the server. lakeshore ssh upload with no alias drops into a multi-select grouped into "new" / "existing", dedup'd by SSH fingerprint. See SSH Provider.
  • Shell completion covering the top-level groups, their subcommands, flag names, and dynamic values. Install with lakeshore completion bash|zsh|fish. See Completion.
  • Tunnels (metadata only) — lakeshore tunnels add / list / show / remove stores wg-quick configs; providers update <name> --tunnel <tunnel> attaches one. See Tunnels.