JSON output
JSON stdout schema for vmup --json on upload and check, including fields for batch id, remote path, and prompt.
Pass --json on upload (vmup …, vmup watch, vmup --clip) or vmup check. JSON is printed on stdout. Human lines, spinner, skip warnings, and the update notice stay off stdout (--json suppresses the update notice). Non-TTY stdout/stderr also skip the notice.
vmup prune --json (including with --all) does not emit this schema.
Success (upload)
{
"ok": true,
"batchId": "agents-20260911-140128-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"profile": "default",
"remotePath": "~/vmup/agents-20260911-140128-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/",
"prompt": "Please inspect all files in ~/vmup/agents-20260911-140128-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/",
"count": 2,
"files": ["image-01.png", "file-01.pdf"],
"sweeper": true
}| Field | Type | Notes |
|---|---|---|
ok | boolean | true |
batchId | string | Staging / remote directory name |
profile | string | Profile name, or ssh:<alias> for --ssh-host |
remotePath | string | Always ends with / |
prompt | string | prompt_template with {{remote_path}} replaced |
count | number | Staged file count |
files | string[] | Basenames after rename (image-01.png), not original paths |
sweeper | boolean or omitted | true/false if the check ran; omitted if the presence check threw |
Pretty-printed with JSON.stringify(..., null, 2).
JSON mode returns after printing the object. It does not copy to the clipboard.
Success (check)
{
"ok": true,
"profile": "default",
"remoteDir": "~/vmup",
"sweeper": true
}Error
{
"ok": false,
"error": "SSH preflight failed: …",
"localStaging": "/Users/you/.cache/vmup/agents-…"
}| Field | When |
|---|---|
ok | Always false |
error | Message |
localStaging | SSH/upload failures after a session was created |
Unusable target (no host) errors with --json before staging: { ok, error } only, exit 1.
Exit codes are still set. See Exit codes.