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. Aliasesdashboardandtop. 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 ownLAKESHORE_*env fallbacks stay authoritative. Added Bun runtime support to thebinshim.lakeshore dreamlake— the DreamLake data-plane group ported from the Python CLI:login/logout/profile,upload/download/list,create/update/deletefor bindrs and datasets,video,artifact, andvectorize. It uses its own servers and its own credential store under~/.dreamlake/.lakeshore storage— S3-compatible storage entries:add(with--provisionto create the bucket),list,show,update,remove --purge,presign, andcredentials(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 iscode-staging.lakeshore admin—tokens create/list/revokeandnamespace create/list/delete. Every subcommand requiresLAKESHORE_ADMIN_TOKEN.- Compose daemon-group fields —
setup(bash snippets),startup(Python-env script),python, andmountsinlakeshore.yaml.
Changed
host_setup→setupin 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 --kindhelp now lists all ten kinds the server accepts:nfs,samba,ftp,sftp,s3,s3fs,google_drive,dropbox,bind,configmap.- Server-side
hintfields on errors are surfaced in CLI output, and thetoken createlogin hint includes--namespace.
0.1.16
Added
lakeshore queues— the queue CRUD surface:add,ls,show,patch,archive,unarchive,drain,rm, plusevents(the elasticity controller's audit trail) andstats(current daemon / utilization / pending signals).daemon launch --queueanddaemon update --add-queue/--remove-queueplumb membership throughWorker.queues.- Compose —
lakeshore up/down/ps/status/logs, reading alakeshore.yaml(-fto 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
lanesCLI surface is gone;Worker.queuesis the membership field.
Fixed
daemon updateresolves 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 bydaemon launch --name), or amachine_id. ObjectId-shaped strings skip the lookup. Duplicates report the candidates and ask for--id <id>;--idforces 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 remotepython3 -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 onexec/daemon exec.passThroughOptions()means CLI-side flags go before the daemon argument and everything after it is the remote command.
Changed
POLL_WINDOW_S60 → 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: stringon the ExecJob row vsstdin: Vec<u8>on the daemon'sExecBody). The transform now decodes base64 → bytes at the poll-pop boundary. daemon exec <label>500'd during name lookup. The control plane'sprisma.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 AWSRequestLimitExceeded.daemon launch --name <name>anddaemon.namein.lakeshorefor human-friendly labels.daemon.capacityin.lakeshore— per-project instance-type override that flows throughdaemon launch.daemon launch-log <id>— fetch cloud console output for boot-time debugging (EC2 only)..lakeshoreproject config — a local file declaring project-level daemon launch / setup defaults, consumed bydaemon launch. Walks up from cwd and stops at the git root;.lakeshore.locallayers on top.daemon installimprovements — runs as the installing user, adds the user to thedockergroup, 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--alland--prefix <pattern>flags for bulk updates.otasurvives as a hidden, deprecated alias that still requires--version; new scripts should usedaemon update.daemon kill— terminating the cloud instance is now the default (opt out with--no-terminate); the--providerflag was dropped; bulk kill via--prefix <pattern>+--yes.
0.1.13 — 2026-04-18
Added
--watchondaemon list/daemon show— live refresh in the terminal,Ctrl-Cto exit. The value is optional; bare--watchmeans 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.--watchon daemon and jobslist/show(initial cut).
0.1.10 — 2026-04-01
Added
- Mounts CRUD —
lakeshore mounts add / list / show / update / removefornfs,samba,ftp,sftp,s3,s3fs,google_drive,dropbox,bind, andconfigmap. Server-side source of truth; the CLI writes metadata only. See Mounts.
Fixed
daemon installre-anchored as a subcommand ofdaemon(it had been accidentally chained offshow.action()).
0.1.9 — 2026-03-15
Added
- One-command daemon lifecycle —
lakeshore daemon install <ssh-alias>SSHes to the host, drops thenymphbinary, registers it, and waits for the Worker row. Pair withdaemon kill <id>anddaemon cleanup --older-than <duration>to prune stale rows. See Daemon lifecycle. - Interactive provider editor —
lakeshore providers editopens a two-step picker (provider → action) for hide / unhide / soft-delete / restore.providers list --hidden --deleted --allwidens the view. See Providers. - Cloud-config auto-detect —
lakeshore aws discoverandlakeshore gcp discoverenumerate 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 discovermarks entries with local-only directives stripped and aliases already on the server.lakeshore ssh uploadwith 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 / removestores wg-quick configs;providers update <name> --tunnel <tunnel>attaches one. See Tunnels.