DAH-2592: describe the real lium CLI in the agent skill - #5
Merged
Conversation
arhangel66
marked this pull request as ready for review
August 5, 2026 16:34
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
DAH-2592. Rewrites the agent-facing CLI reference against the shipped binary
(
liumv0.0.29). Documentation only — no CLI code.Why
lium/references/cli-commands.mddid not merely lag the CLI, it invented parts ofit:
ls --region/--min-memory/--max-priceand a positionalGPU_TYPE,ps -a/--sort,ssh --command/--port/--key,exec --timeout/--output,scp -r/-p,rsync --delete/--exclude/--dry-run, themesmonokai/solarized/dracula/nordwherethe CLI takes
dark|light. It also denied two capabilities that exist — "lium rmhas no
-y, useecho y |" and "lium psdoes not support--format json". Adenial is worse than silence: it stops an agent using a command that works.
Seven commands (
balance,topup,update,ssh-keys,mine,provider,gpu-splitting) were missing entirely, and real flags went undocumented —up --no-ssh/--dockerfile/--ssh-name/--volume-encryption,fund --alpha/-k/--json,exec -s/--script,-e/--env,--json,ls --count/--min-cuda/--sort/--limit,ps [POD_ID],scp -d/--download,config path/reset/unset,bk restore-logs.How it was verified
lium <cmd> --helpwas captured for all 27 top-level commands and all 62sub-commands, and every section is diffed against its dump in both directions:
each real flag must appear in the doc, and each flag token in the doc must exist
somewhere in the real help. Sentences that deliberately state a flag does not
exist are exempt — they are what stops an agent re-inventing it.
Behavioural claims that
--helpcannot answer were read from the source instead.That is where the two sharpest fixes came from:
lium lsexits 0 when it fails.GetExecutorsActionswallows everyexception and the command prints it and returns, so
lium ls >/dev/null && echo OKreports OK with a revoked API key. Both files used exactly that as their auth
check; they now use
lium balance. Onlyexec,rmandupare reliable — therest is DAH-2593.
psandlogsdo not accept an index. They compare the argument literallyagainst pod ids and names, so
lium ps 1reports "not found". Pod Targeting is nowa per-command table rather than one "all of them accept" claim.
Also corrected:
--sort price_gpuwas labelled the default (it isdownload);lium upneeds--no-sshor it ends in an interactive SSH session and stalls anagent; exit codes 3 and 6 are defined but unreachable, so the table publishes
0/1/2/4/5 plus an explicit warning about exit 0;
lium mineis provider-side, notrenter-side;
LIUM_SSH_KEYdoes not exist.llms-full.txtis regenerated in the same change, ascheck-llms-full.ymlrequires.Parallel PRs cover the same drift in
lium-docsand in thelium-toolkit:cliplugin skill.
Supersedes #4
#4 synced the same reference against v0.0.27 from a base that predates #3. Every
claim it fixed is covered here and re-verified against v0.0.29:
psdoes take--format json, target pods by name rather than by index,themeaccepts onlydark|light,LIUM_SSH_KEYdoes not exist, and the machine-readable-output map ispublished as a table.
The one thing #4 carried that this branch did not is its
sdk-reference.mdone-liner, now included.
Lium.execisexec(self, pod, *, command, ...), so thedocumented
lium.exec(pod, "python /root/train.py")raisesTypeError.Checking the rest of that file for the same defect found it in fifteen more
signatures —
scp,upload,download,rsync,switch_template,restore,backup_now,install_jupyter,schedule_terminationand the rest all takekeyword-only arguments the table showed as positional. Two parameters did not exist
at all (
exec(..., timeout=),backup_create(..., name=)) andrestore'starget_pathis reallyrestore_path. Signatures now use Python's own*notation, with a line above the tables explaining it.
#4 can be closed.