vmup CLI commands: init, check, watch, prune
Reference for vmup, init, check, profiles, watch, prune, and the default upload, including what each command is for.
vmup --help
vmup --versionVersion is 0.4.1 in this tree. --help is Commander’s generated usage. -V / --version never print the update notice.
Positional options are enabled: flags after file names still bind to the root command.
vmup [files…]
Default command. Uploads a batch.
| Inputs | Behavior |
|---|---|
| One or more paths | Collect those files / directory children, validate, upload |
No paths, no --clip / --watch | Native file picker |
--clip | Clipboard loop, then upload |
--watch | Same as vmup watch |
After a successful human-mode upload, the prompt is copied to the clipboard (clipboard_copy = "prompt"). --json skips that copy. See config.toml.
Flags: --profile, --ssh-host, --clip, --watch, --dir, --video, --force, --keep-local, --ttl, --json. See Flags.
vmup init
Create or update ~/.config/vmup/config.toml and optionally install the remote sweeper.
| Flag | Meaning |
|---|---|
-y, --yes | Non-interactive. Requires VMUP_HOST. |
--no-sweeper | With -y, skip sweeper install. Default is to install. |
Interactive flow: Run init again.
Exit: 0 on a finished wizard (SSH failure after write still returns 0). -y without VMUP_HOST returns 1. Unknown overwrite target returns 1.
vmup check
Test SSH using saved config. Skips the init wizard.
| Flag | Meaning |
|---|---|
-p, --profile <name> | Profile |
--ssh-host <alias> | ~/.ssh/config alias |
--sweeper | Install or refresh ~/vmup/.cleanup.sh and cron |
--json | JSON on stdout |
Human success: SSH OK, remote dir, sweeper installed, outdated, or missing.
Exit: 0 ok, 1 unusable target, 3 SSH or sweeper install failure.
vmup profiles
Prints the config file path, the default profile name, and each profile as user@host or ssh_host=… plus remote=….
No flags. Exit 0.
vmup watch
Watch a folder, then upload. Equivalent to vmup --watch.
Flags: --profile, --ssh-host, --dir, --video, --force, --keep-local, --ttl, --json.
--force is accepted but the watcher filters types before staging; --force does not pull a rejected watch file back in. It still applies if you used the root picker path.
vmup prune
Delete remote batches. Default removes marked batches after their stored expiry and uses the resolved TTL as an age cutoff for unmarked legacy batches. --all ignores TTL. Requires a connectable target (same resolve rules as upload).
vmup prune
vmup prune --all
vmup prune --id agents-20260911-140128-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee| Flag | Meaning |
|---|---|
-p, --profile <name> | Profile |
--ssh-host <alias> | Alias |
--local | Also delete local staging older than 24 hours |
--id <batchId> | Delete that remote batch instead of age-based prune |
--all | Delete every remote agents-* batch, ignoring TTL |
--install-sweeper | Install/refresh remote cron, then prune |
--ttl <minutes> | Legacy fallback age cutoff (and sweeper fallback if installing). Ignored by --all |
--json | Suppresses update notice only. No JSON body. |
Order: --local first (no SSH), then resolve + preflight, then optional sweeper, then --id or --all or age prune.
--all and --id together: Use either --all or --id, not both (exit 1). Invalid --id throws Invalid batch id: … (must match agents-YYYYMMDD-HHMMSS-<uuid>).
Failure after resolve: exit 3.