ghostdock 0.0.19 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,46 +4,46 @@
4
4
 
5
5
  Every command the `ghostdock` CLI ships, with its full description and flags.
6
6
  For how to install, log in and choose an organization, read [cli.md](cli.md). Concepts and
7
- workflows are in the built-in skills (`ghostdock skills list`).
7
+ workflows are in the built-in skills (`ghostdock skill list`).
8
8
 
9
9
  Binaries: `ghostdock`, `gdock`.
10
10
  Global flag `--base-url`: API origin (overrides GHOSTDOCK_BASE_URL and the built-in default).
11
11
  Global flag `--json`: Print the result as one JSON document on stdout, for scripts and agents. Without it, output is for people.
12
12
 
13
- ## `ghostdock apps`
13
+ ## `ghostdock app`
14
14
 
15
15
  Published apps of an organization.
16
16
 
17
- ### `ghostdock apps list`
17
+ ### `ghostdock app list`
18
18
 
19
- List the live published apps (sites) of an organization, with their URLs. Each app has a siteId to pass to sites unpublish.
19
+ List the live published apps (sites) of an organization, with their URLs. Each app has a siteId to pass to site unpublish.
20
20
 
21
21
  ```
22
- ghostdock apps list [flags]
22
+ ghostdock app list [flags]
23
23
  ```
24
24
 
25
25
  | Argument | Description |
26
26
  | --- | --- |
27
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
27
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
28
28
 
29
- MCP tool: `apps_list`.
29
+ MCP tool: `app_list`.
30
30
 
31
31
  ## `ghostdock docker`
32
32
 
33
- Docker over the private network: a sandbox's Docker engine from this machine.
33
+ Docker over the private network: a VM's Docker engine from this machine.
34
34
 
35
35
  ### `ghostdock docker context`
36
36
 
37
- Point Docker at a sandbox's Docker engine over the private network: plain `docker` and `docker compose` then run there. Creates (or updates) the Docker context ghostdock-<org>-<sandbox> for tcp://<sandbox>.<org>.ghostdock.internal:2376 with a client certificate of this machine's device, and makes it the current context. Needs `ghostdock network connect` first, and Docker's CLI. The certificate lives 30 days; `network connect` and this command renew it with 10 days left. An expired certificate fails Docker's TLS handshake with Docker's own error: run this command again. Docker's `no such host` on a ghostdock.internal address means this machine is not connected: run `ghostdock network connect`. After an organization rename the old name stops resolving: run it again to update the host.
37
+ Point Docker at a VM's Docker engine over the private network: plain `docker` and `docker compose` then run there. Creates (or updates) the Docker context ghostdock-<org>-<vm> for tcp://<vm>.<org>.ghostdock.internal:2376 with a client certificate of this machine's device, and makes it the current context. Needs `ghostdock network connect` first, and Docker's CLI. The certificate lives 30 days; `network connect` and this command renew it with 10 days left. An expired certificate fails Docker's TLS handshake with Docker's own error: run this command again. Docker's `no such host` on a ghostdock.internal address means this machine is not connected: run `ghostdock network connect`. After an organization rename the old name stops resolving: run it again to update the host.
38
38
 
39
39
  ```
40
- ghostdock docker context <sandbox> [flags]
40
+ ghostdock docker context <vm> [flags]
41
41
  ```
42
42
 
43
43
  | Argument | Description |
44
44
  | --- | --- |
45
- | `<sandbox>` | Sandbox name, from `network ls`. Required. |
46
- | `--org <value>` | Organization id or slug, from `ghostdock organizations list` (default: GHOSTDOCK_ORG, then `ghostdock organizations use`). |
45
+ | `<vm>` | VM name, from `network ls`. Required. |
46
+ | `--org <value>` | Organization id or slug, from `ghostdock organization list` (default: GHOSTDOCK_ORG, then `ghostdock organization use`). |
47
47
  | `--use` | Make it the current Docker context (`docker context use`). `--no-use` only creates or updates it. Default: `true`. |
48
48
 
49
49
  ## `ghostdock env`
@@ -61,7 +61,7 @@ ghostdock env delete <name> [flags]
61
61
  | Argument | Description |
62
62
  | --- | --- |
63
63
  | `<name>` | Environment variable name. Required. |
64
- | `--org <value>` | Organization id or slug, from `ghostdock organizations list` (default: GHOSTDOCK_ORG, then `ghostdock organizations use`). |
64
+ | `--org <value>` | Organization id or slug, from `ghostdock organization list` (default: GHOSTDOCK_ORG, then `ghostdock organization use`). |
65
65
 
66
66
  MCP tool: `env_delete`.
67
67
 
@@ -76,7 +76,7 @@ ghostdock env get <name> [flags]
76
76
  | Argument | Description |
77
77
  | --- | --- |
78
78
  | `<name>` | Environment variable name. Required. |
79
- | `--org <value>` | Organization id or slug, from `ghostdock organizations list` (default: GHOSTDOCK_ORG, then `ghostdock organizations use`). |
79
+ | `--org <value>` | Organization id or slug, from `ghostdock organization list` (default: GHOSTDOCK_ORG, then `ghostdock organization use`). |
80
80
 
81
81
  MCP tool: `env_get`.
82
82
 
@@ -90,7 +90,7 @@ ghostdock env list [flags]
90
90
 
91
91
  | Argument | Description |
92
92
  | --- | --- |
93
- | `--org <value>` | Organization id or slug, from `ghostdock organizations list` (default: GHOSTDOCK_ORG, then `ghostdock organizations use`). |
93
+ | `--org <value>` | Organization id or slug, from `ghostdock organization list` (default: GHOSTDOCK_ORG, then `ghostdock organization use`). |
94
94
 
95
95
  MCP tool: `env_list`.
96
96
 
@@ -105,7 +105,7 @@ ghostdock env set <name> [flags]
105
105
  | Argument | Description |
106
106
  | --- | --- |
107
107
  | `<name>` | Environment variable name. Required. |
108
- | `--org <value>` | Organization id or slug, from `ghostdock organizations list` (default: GHOSTDOCK_ORG, then `ghostdock organizations use`). |
108
+ | `--org <value>` | Organization id or slug, from `ghostdock organization list` (default: GHOSTDOCK_ORG, then `ghostdock organization use`). |
109
109
  | `--value <value>` | Value to store. |
110
110
  | `--value-stdin` | Read the value from stdin — keeps secrets out of shell history. |
111
111
  | `--secret` | Shorthand for --kind secret. Required when creating a secret. |
@@ -114,139 +114,139 @@ ghostdock env set <name> [flags]
114
114
 
115
115
  MCP tool: `env_set`.
116
116
 
117
- ## `ghostdock images`
117
+ ## `ghostdock image`
118
118
 
119
119
  Organization image catalog: OCI bookmarks, Dockerfiles and Compose files.
120
120
 
121
- ### `ghostdock images add`
121
+ ### `ghostdock image add`
122
122
 
123
123
  Bookmark an OCI image ref in the organization’s image catalog. Fails if it is already bookmarked.
124
124
 
125
125
  ```
126
- ghostdock images add --ref <string> [flags]
126
+ ghostdock image add --ref <string> [flags]
127
127
  ```
128
128
 
129
129
  | Argument | Description |
130
130
  | --- | --- |
131
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
131
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
132
132
  | `--ref <string>` | OCI image reference, e.g. ghcr.io/acme/app:latest. Required. |
133
133
  | `--label <string>` | Display label for the bookmark. Optional. |
134
134
 
135
- MCP tool: `images_add`.
135
+ MCP tool: `image_add`.
136
136
 
137
- ### `ghostdock images add-compose`
137
+ ### `ghostdock image add-compose`
138
138
 
139
139
  Add a Compose project to the organization’s image catalog. Give its files, or a reference: a Compose project published as an OCI artifact (oci://…), used through include: with an optional override. ghostdock.* service labels (of the files, or of the override) become its manifest. Fails if the name is taken.
140
140
 
141
141
  ```
142
- ghostdock images add-compose --name <string> [flags]
142
+ ghostdock image add-compose --name <string> [flags]
143
143
  ```
144
144
 
145
145
  | Argument | Description |
146
146
  | --- | --- |
147
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
147
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
148
148
  | `--name <string>` | Image name, unique in the organization. Required. |
149
149
  | `--files <object>` | Compose files by file name. Must include docker-compose.yml/yaml or compose.yml/yaml. (JSON object) |
150
150
  | `--reference <string>` | A published Compose project instead of files, e.g. oci://docker.io/ghostdockhq/headless-compose:ubuntu-26.04. |
151
151
  | `--override <string>` | With reference: a Compose file merged into it (services, environment, labels). |
152
152
 
153
- MCP tool: `images_add_compose`.
153
+ MCP tool: `image_add_compose`.
154
154
 
155
- ### `ghostdock images add-dockerfile`
155
+ ### `ghostdock image add-dockerfile`
156
156
 
157
157
  Add a Dockerfile to the organization’s image catalog. ghostdock.* LABEL lines become its manifest. Fails if the name is taken.
158
158
 
159
159
  ```
160
- ghostdock images add-dockerfile --name <string> --dockerfile <string> [flags]
160
+ ghostdock image add-dockerfile --name <string> --dockerfile <string> [flags]
161
161
  ```
162
162
 
163
163
  | Argument | Description |
164
164
  | --- | --- |
165
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
165
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
166
166
  | `--name <string>` | Image name, unique in the organization. Required. |
167
167
  | `--dockerfile <string>` | Dockerfile text. ghostdock.* LABEL lines become the image manifest. Required. |
168
168
 
169
- MCP tool: `images_add_dockerfile`.
169
+ MCP tool: `image_add_dockerfile`.
170
170
 
171
- ### `ghostdock images get`
171
+ ### `ghostdock image get`
172
172
 
173
173
  Get one catalog image with its spec, manifest and requirements. Returns kind, spec and a redacted manifest with requiredEnvironment / requiredUrls / requiredMcps. An OCI bookmark’s manifest is null: its labels are read at create time.
174
174
 
175
175
  ```
176
- ghostdock images get <image-id> [flags]
176
+ ghostdock image get <image-id> [flags]
177
177
  ```
178
178
 
179
179
  | Argument | Description |
180
180
  | --- | --- |
181
- | `<image-id>` | Catalog image id, from images list or images get. Required. |
182
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
181
+ | `<image-id>` | Catalog image id, from image list or image get. Required. |
182
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
183
183
 
184
- MCP tool: `images_get`.
184
+ MCP tool: `image_get`.
185
185
 
186
- ### `ghostdock images list`
186
+ ### `ghostdock image list`
187
187
 
188
- List the images an organization can boot sandboxes from. OCI bookmarks, images add-dockerfile and images add-compose rows, and refs its sandboxes use. A discovery catalog, not an allowlist: sandboxes create accepts any OCI ref. Items carry sandboxCount and a redacted manifest with requiredEnvironment / requiredUrls / requiredMcps. An OCI bookmark stores no labels (manifest null): sandboxes create reads them from the digest the ref names then.
188
+ List the images an organization can boot VMs from. OCI bookmarks, image add-dockerfile and image add-compose rows, and refs its VMs use. A discovery catalog, not an allowlist: vm create accepts any OCI ref. Items carry vmCount and a redacted manifest with requiredEnvironment / requiredUrls / requiredMcps. An OCI bookmark stores no labels (manifest null): vm create reads them from the digest the ref names then.
189
189
 
190
190
  ```
191
- ghostdock images list [flags]
191
+ ghostdock image list [flags]
192
192
  ```
193
193
 
194
194
  | Argument | Description |
195
195
  | --- | --- |
196
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
196
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
197
197
 
198
- MCP tool: `images_list`.
198
+ MCP tool: `image_list`.
199
199
 
200
- ### `ghostdock images remove`
200
+ ### `ghostdock image remove`
201
201
 
202
- Remove an image from the organization’s catalog. Sandboxes already using it are not affected.
202
+ Remove an image from the organization’s catalog. VMs already using it are not affected.
203
203
 
204
204
  ```
205
- ghostdock images remove <image-id> [flags]
205
+ ghostdock image remove <image-id> [flags]
206
206
  ```
207
207
 
208
208
  | Argument | Description |
209
209
  | --- | --- |
210
- | `<image-id>` | Catalog image id, from images list or images get. Required. |
211
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
210
+ | `<image-id>` | Catalog image id, from image list or image get. Required. |
211
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
212
212
 
213
- MCP tool: `images_remove`.
213
+ MCP tool: `image_remove`.
214
214
 
215
- ### `ghostdock images update-compose`
215
+ ### `ghostdock image update-compose`
216
216
 
217
217
  Replace a catalog Compose image’s files, reference, override and/or name. Re-parses its labels.
218
218
 
219
219
  ```
220
- ghostdock images update-compose <image-id> [flags]
220
+ ghostdock image update-compose <image-id> [flags]
221
221
  ```
222
222
 
223
223
  | Argument | Description |
224
224
  | --- | --- |
225
- | `<image-id>` | Catalog image id, from images list or images get. Required. |
226
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
225
+ | `<image-id>` | Catalog image id, from image list or image get. Required. |
226
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
227
227
  | `--files <object>` | New Compose files by file name. Omit to keep the current files. (JSON object) |
228
228
  | `--reference <string>` | A new reference (oci://…): the image becomes a Compose reference. |
229
229
  | `--override <string>` | A reference’s new override; null removes it. |
230
230
  | `--name <string>` | New image name. Omit to keep it. |
231
231
 
232
- MCP tool: `images_update_compose`.
232
+ MCP tool: `image_update_compose`.
233
233
 
234
- ### `ghostdock images update-dockerfile`
234
+ ### `ghostdock image update-dockerfile`
235
235
 
236
236
  Replace a catalog Dockerfile, optionally renaming it. Re-parses its ghostdock.* labels.
237
237
 
238
238
  ```
239
- ghostdock images update-dockerfile <image-id> --dockerfile <string> [flags]
239
+ ghostdock image update-dockerfile <image-id> --dockerfile <string> [flags]
240
240
  ```
241
241
 
242
242
  | Argument | Description |
243
243
  | --- | --- |
244
- | `<image-id>` | Catalog image id, from images list or images get. Required. |
245
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
244
+ | `<image-id>` | Catalog image id, from image list or image get. Required. |
245
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
246
246
  | `--dockerfile <string>` | Dockerfile text. ghostdock.* LABEL lines become the image manifest. Required. |
247
247
  | `--name <string>` | New image name. Omit to keep it. |
248
248
 
249
- MCP tool: `images_update_dockerfile`.
249
+ MCP tool: `image_update_dockerfile`.
250
250
 
251
251
  ## `ghostdock login`
252
252
 
@@ -273,7 +273,7 @@ ghostdock logout
273
273
 
274
274
  ## `ghostdock network`
275
275
 
276
- The private network: reach your sandboxes by address and name from this machine.
276
+ The private network: reach your VMs by address and name from this machine.
277
277
 
278
278
  ### `ghostdock network connect`
279
279
 
@@ -285,8 +285,8 @@ ghostdock network connect [provider] [flags]
285
285
 
286
286
  | Argument | Description |
287
287
  | --- | --- |
288
- | `<provider>` | Sandbox provider name or id. Omit for the organization's default provider (else the platform default). Only its sandboxes are reachable; connecting through another replaces the connection. |
289
- | `--org <value>` | Organization id or slug, from `ghostdock organizations list` (default: GHOSTDOCK_ORG, then `ghostdock organizations use`). |
288
+ | `<provider>` | Provider name or id. Omit for the organization's default provider (else the platform default). Only its VMs are reachable; connecting through another replaces the connection. |
289
+ | `--org <value>` | Organization id or slug, from `ghostdock organization list` (default: GHOSTDOCK_ORG, then `ghostdock organization use`). |
290
290
 
291
291
  ### `ghostdock network devices`
292
292
 
@@ -318,7 +318,7 @@ ghostdock network disconnect
318
318
 
319
319
  ### `ghostdock network ls`
320
320
 
321
- Sandboxes of an organization with their private addresses and names, and which are reachable through the current connection.
321
+ VMs of an organization with their private addresses and names, and which are reachable through the current connection.
322
322
 
323
323
  ```
324
324
  ghostdock network ls [flags]
@@ -326,7 +326,7 @@ ghostdock network ls [flags]
326
326
 
327
327
  | Argument | Description |
328
328
  | --- | --- |
329
- | `--org <value>` | Organization id or slug, from `ghostdock organizations list` (default: GHOSTDOCK_ORG, then `ghostdock organizations use`). |
329
+ | `--org <value>` | Organization id or slug, from `ghostdock organization list` (default: GHOSTDOCK_ORG, then `ghostdock organization use`). |
330
330
 
331
331
  ### `ghostdock network status`
332
332
 
@@ -336,38 +336,38 @@ Whether this machine is connected, through which provider, and as which device.
336
336
  ghostdock network status
337
337
  ```
338
338
 
339
- ## `ghostdock organizations`
339
+ ## `ghostdock organization`
340
340
 
341
341
  Organizations you belong to.
342
342
 
343
- ### `ghostdock organizations current`
343
+ ### `ghostdock organization current`
344
344
 
345
345
  Show which organization commands use, and where it comes from.
346
346
 
347
347
  ```
348
- ghostdock organizations current [flags]
348
+ ghostdock organization current [flags]
349
349
  ```
350
350
 
351
351
  | Argument | Description |
352
352
  | --- | --- |
353
353
  | `--org <value>` | Check what this --org would resolve to. |
354
354
 
355
- ### `ghostdock organizations list`
355
+ ### `ghostdock organization list`
356
356
 
357
357
  List the organizations you belong to, with their ids and slugs.
358
358
 
359
359
  ```
360
- ghostdock organizations list
360
+ ghostdock organization list
361
361
  ```
362
362
 
363
- MCP tool: `organizations_list`.
363
+ MCP tool: `organization_list`.
364
364
 
365
- ### `ghostdock organizations use`
365
+ ### `ghostdock organization use`
366
366
 
367
367
  Set the default organization for commands run without --org (in every directory).
368
368
 
369
369
  ```
370
- ghostdock organizations use [org] [flags]
370
+ ghostdock organization use [org] [flags]
371
371
  ```
372
372
 
373
373
  | Argument | Description |
@@ -375,331 +375,331 @@ ghostdock organizations use [org] [flags]
375
375
  | `<org>` | Organization id or slug. |
376
376
  | `--clear` | Remove the default organization. |
377
377
 
378
- ## `ghostdock projects`
378
+ ## `ghostdock project`
379
379
 
380
380
  Deployable projects, their deployments and environment.
381
381
 
382
- ### `ghostdock projects create`
382
+ ### `ghostdock project create`
383
383
 
384
- Create an empty project. Nothing is deployed until projects publish.
384
+ Create an empty project. Nothing is deployed until project publish.
385
385
 
386
386
  ```
387
- ghostdock projects create --display-name <string> [flags]
387
+ ghostdock project create --display-name <string> [flags]
388
388
  ```
389
389
 
390
390
  | Argument | Description |
391
391
  | --- | --- |
392
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
392
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
393
393
  | `--display-name <string>` | Project name. Required. |
394
394
 
395
- MCP tool: `projects_create`.
395
+ MCP tool: `project_create`.
396
396
 
397
- ### `ghostdock projects deployments`
397
+ ### `ghostdock project deployment`
398
398
 
399
399
  Deployments of a project.
400
400
 
401
- ### `ghostdock projects deployments get`
401
+ ### `ghostdock project deployment get`
402
402
 
403
403
  Get one deploy attempt, with links to its stored files. fileUrls are authenticated GET paths for source.zip and generated Compose files.
404
404
 
405
405
  ```
406
- ghostdock projects deployments get <deployment-id> --project-id <string> [flags]
406
+ ghostdock project deployment get <deployment-id> --project-id <string> [flags]
407
407
  ```
408
408
 
409
409
  | Argument | Description |
410
410
  | --- | --- |
411
- | `<deployment-id>` | Deployment id, from projects deployments list. Required. |
412
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
413
- | `--project-id <string>` | Project id, from projects list (projects publish returns it too). Required. |
411
+ | `<deployment-id>` | Deployment id, from project deployment list. Required. |
412
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
413
+ | `--project-id <string>` | Project id, from project list (project publish returns it too). Required. |
414
414
 
415
- MCP tool: `projects_deployments_get`.
415
+ MCP tool: `project_deployment_get`.
416
416
 
417
- ### `ghostdock projects deployments list`
417
+ ### `ghostdock project deployment list`
418
418
 
419
419
  List a project’s deploy attempts, newest first.
420
420
 
421
421
  ```
422
- ghostdock projects deployments list <project-id> [flags]
422
+ ghostdock project deployment list <project-id> [flags]
423
423
  ```
424
424
 
425
425
  | Argument | Description |
426
426
  | --- | --- |
427
- | `<project-id>` | Project id, from projects list (projects publish returns it too). Required. |
428
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
427
+ | `<project-id>` | Project id, from project list (project publish returns it too). Required. |
428
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
429
429
 
430
- MCP tool: `projects_deployments_list`.
430
+ MCP tool: `project_deployment_list`.
431
431
 
432
- ### `ghostdock projects env`
432
+ ### `ghostdock project env`
433
433
 
434
434
  Environment a project exports.
435
435
 
436
- ### `ghostdock projects env delete`
436
+ ### `ghostdock project env delete`
437
437
 
438
438
  Delete one of a project’s own variables or secrets.
439
439
 
440
440
  ```
441
- ghostdock projects env delete <name> --project-id <string> [flags]
441
+ ghostdock project env delete <name> --project-id <string> [flags]
442
442
  ```
443
443
 
444
444
  | Argument | Description |
445
445
  | --- | --- |
446
446
  | `<name>` | Environment variable name, e.g. DATABASE_URL. Letters, digits and underscores only. Case-sensitive; stored exactly as provided. Required. |
447
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
448
- | `--project-id <string>` | Project id, from projects list (projects publish returns it too). Required. |
447
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
448
+ | `--project-id <string>` | Project id, from project list (project publish returns it too). Required. |
449
449
 
450
- MCP tool: `projects_env_delete`.
450
+ MCP tool: `project_env_delete`.
451
451
 
452
- ### `ghostdock projects env get`
452
+ ### `ghostdock project env get`
453
453
 
454
454
  Get a project’s stored environment. Local entries (secret values withheld), organization opt-ins and bindings, applied on every deploy.
455
455
 
456
456
  ```
457
- ghostdock projects env get <project-id> [flags]
457
+ ghostdock project env get <project-id> [flags]
458
458
  ```
459
459
 
460
460
  | Argument | Description |
461
461
  | --- | --- |
462
- | `<project-id>` | Project id, from projects list (projects publish returns it too). Required. |
463
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
462
+ | `<project-id>` | Project id, from project list (project publish returns it too). Required. |
463
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
464
464
 
465
- MCP tool: `projects_env_get`.
465
+ MCP tool: `project_env_get`.
466
466
 
467
- ### `ghostdock projects env select`
467
+ ### `ghostdock project env select`
468
468
 
469
- Replace the organization entries a project exports. Full replace: environment is the whole list ([] clears it), and omitting bindings clears the remaps. Read the environment skill (`ghostdock skills get environment`).
469
+ Replace the organization entries a project exports. Full replace: environment is the whole list ([] clears it), and omitting bindings clears the remaps. Read the environment skill (`ghostdock skill get environment`).
470
470
 
471
471
  ```
472
- ghostdock projects env select <project-id> --environment <array> [flags]
472
+ ghostdock project env select <project-id> --environment <array> [flags]
473
473
  ```
474
474
 
475
475
  | Argument | Description |
476
476
  | --- | --- |
477
- | `<project-id>` | Project id, from projects list (projects publish returns it too). Required. |
478
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
477
+ | `<project-id>` | Project id, from project list (project publish returns it too). Required. |
478
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
479
479
  | `--environment <array>` | Organization catalogue entry names to export under their own names. (JSON array) Required. |
480
480
  | `--bindings <array>` | Slot-centric org bindings. Omit to clear existing remaps. (JSON array) |
481
481
 
482
- MCP tool: `projects_env_select`.
482
+ MCP tool: `project_env_select`.
483
483
 
484
- ### `ghostdock projects env set`
484
+ ### `ghostdock project env set`
485
485
 
486
486
  Create or replace one of a project’s own variables or secrets. Prefer the CLI for secret values so they stay out of the conversation.
487
487
 
488
488
  ```
489
- ghostdock projects env set <name> --project-id <string> --value <string> --kind <string> [flags]
489
+ ghostdock project env set <name> --project-id <string> --value <string> --kind <string> [flags]
490
490
  ```
491
491
 
492
492
  | Argument | Description |
493
493
  | --- | --- |
494
494
  | `<name>` | Environment variable name, e.g. DATABASE_URL. Letters, digits and underscores only. Case-sensitive; stored exactly as provided. Required. |
495
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
496
- | `--project-id <string>` | Project id, from projects list (projects publish returns it too). Required. |
495
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
496
+ | `--project-id <string>` | Project id, from project list (project publish returns it too). Required. |
497
497
  | `--value <string>` | The value to store. A secret value can be replaced later but never read back. Required. |
498
498
  | `--kind <string>` | "variable" or "secret". A secret value can be replaced but never read back. Required. |
499
499
  | `--comment <string>` | Optional note shown with the entry, e.g. what it is for. |
500
500
 
501
- MCP tool: `projects_env_set`.
501
+ MCP tool: `project_env_set`.
502
502
 
503
- ### `ghostdock projects get`
503
+ ### `ghostdock project get`
504
504
 
505
505
  Get a project with its latest attempt and live deployment. latestDeploymentId includes failures; liveDeploymentId / liveUrl is the success that serves the public URL.
506
506
 
507
507
  ```
508
- ghostdock projects get <project-id> [flags]
508
+ ghostdock project get <project-id> [flags]
509
509
  ```
510
510
 
511
511
  | Argument | Description |
512
512
  | --- | --- |
513
- | `<project-id>` | Project id, from projects list (projects publish returns it too). Required. |
514
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
513
+ | `<project-id>` | Project id, from project list (project publish returns it too). Required. |
514
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
515
515
 
516
- MCP tool: `projects_get`.
516
+ MCP tool: `project_get`.
517
517
 
518
- ### `ghostdock projects list`
518
+ ### `ghostdock project list`
519
519
 
520
- List an organization’s projects. A project owns its environment, deployment history and live URL. apps list lists live URLs instead.
520
+ List an organization’s projects. A project owns its environment, deployment history and live URL. app list lists live URLs instead.
521
521
 
522
522
  ```
523
- ghostdock projects list [flags]
523
+ ghostdock project list [flags]
524
524
  ```
525
525
 
526
526
  | Argument | Description |
527
527
  | --- | --- |
528
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
528
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
529
529
 
530
- MCP tool: `projects_list`.
530
+ MCP tool: `project_list`.
531
531
 
532
- ### `ghostdock projects publish`
532
+ ### `ghostdock project publish`
533
533
 
534
- Inspect local source with the deploy agent and publish to the CDN or a sandbox.
534
+ Inspect local source with the deploy agent and publish to the CDN or a VM.
535
535
 
536
536
  ```
537
- ghostdock projects publish [path] [flags]
537
+ ghostdock project publish [path] [flags]
538
538
  ```
539
539
 
540
540
  | Argument | Description |
541
541
  | --- | --- |
542
- | `--org <value>` | Organization id or slug, from `ghostdock organizations list` (default: GHOSTDOCK_ORG, then `ghostdock organizations use`). |
542
+ | `--org <value>` | Organization id or slug, from `ghostdock organization list` (default: GHOSTDOCK_ORG, then `ghostdock organization use`). |
543
543
  | `--project-id <value>` | Existing project id. Omit to create a project. |
544
544
  | `--replan` | Force a new planner run even when the stored spec still matches. |
545
545
  | `--require-verify` | Fail the deploy (verify_failed) when detected tests fail. Default false: tests still run and are reported. |
546
- | `--spec <value>` | JSON DeploymentSpec to execute on a fresh sandbox instead of planning. Mutually exclusive with --replan. |
546
+ | `--spec <value>` | JSON DeploymentSpec to execute on a fresh VM instead of planning. Mutually exclusive with --replan. |
547
547
  | `--display-name <value>` | Optional display name. |
548
548
  | `--tag <value>` | Optional caller tag (git SHA or free-form label) stored on the deployment. |
549
- | `--auto-stop-interval-minutes <value>` | Same as `sandboxes create`. Omit for the 20-minute default. Pass -1 to keep it running. 0 is rejected. |
550
- | `--auto-delete-after-days <value>` | Same as `sandboxes create`: days stopped before the record is deleted (0–365). Omit for the 14-day default. Pass 0 to delete the record when it stops. |
551
- | `--resources <value>` | Same as `sandboxes create`: JSON { cpu, memoryGiB, diskGiB }. |
552
- | `--environment <value>` | Same as `sandboxes create --environment`: JSON { organization, bindings, local }. Required after awaiting_configuration. |
553
- | `--auto-wake <value>` | Same as `sandboxes urls create --auto-wake`. Default true for the minted URL. |
554
- | `--public <value>` | Same as `sandboxes urls create --public`. Default true for the minted URL. |
555
- | `--sandbox-provider-id <value>` | Same as `sandboxes create`: configured sandbox-provider instance id (omit for the organization default). |
549
+ | `--auto-stop-interval-minutes <value>` | Same as `vm create`. Omit for the 20-minute default. Pass -1 to keep it running. 0 is rejected. |
550
+ | `--auto-delete-after-days <value>` | Same as `vm create`: days stopped before the record is deleted (0–365). Omit for the 14-day default. Pass 0 to delete the record when it stops. |
551
+ | `--resources <value>` | Same as `vm create`: JSON { cpu, memoryGiB, diskGiB }. |
552
+ | `--environment <value>` | Same as `vm create --environment`: JSON { organization, bindings, local }. Required after awaiting_configuration. |
553
+ | `--auto-wake <value>` | Same as `vm url create --auto-wake`. Default true for the minted URL. |
554
+ | `--public <value>` | Same as `vm url create --public`. Default true for the minted URL. |
555
+ | `--provider <value>` | Same as `vm create`: configured provider instance id (omit for the organization default). |
556
556
  | `--zip <value>` | Local ZIP of the source tree. |
557
557
  | `<path>` | File or directory to publish (additional paths are allowed). |
558
558
 
559
- MCP tool: `projects_publish`.
559
+ MCP tool: `project_publish`.
560
560
 
561
- ### `ghostdock projects redeploy`
561
+ ### `ghostdock project redeploy`
562
562
 
563
- Deploy a project’s stored source again, with its current environment. No new upload. Omit deploymentId to retry the last attempt that stored source. Same outcomes and settings as projects publish; read the publishing skill (`ghostdock skills get publishing`).
563
+ Deploy a project’s stored source again, with its current environment. No new upload. Omit deploymentId to retry the last attempt that stored source. Same outcomes and settings as project publish; read the publishing skill (`ghostdock skill get publishing`).
564
564
 
565
565
  ```
566
- ghostdock projects redeploy <project-id> [flags]
566
+ ghostdock project redeploy <project-id> [flags]
567
567
  ```
568
568
 
569
569
  | Argument | Description |
570
570
  | --- | --- |
571
- | `<project-id>` | Project id, from projects list (projects publish returns it too). Required. |
572
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
571
+ | `<project-id>` | Project id, from project list (project publish returns it too). Required. |
572
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
573
573
  | `--deployment-id <string>` | Ship this version’s stored upload and spec. Omit to retry the last attempt that stored source. |
574
- | `--require-verify` | When true, a failing verify step stops the deploy (verify_failed) and tears the sandbox down. Default false. |
574
+ | `--require-verify` | When true, a failing verify step stops the deploy (verify_failed) and tears the VM down. Default false. |
575
575
  | `--tag <string>` | Optional caller tag stored on the new deployment. Metadata only. |
576
576
  | `--resources <object>` | Compute sizing. For image/dockerfile/compose: layered on platform defaults when omitted. For snapshot: optional override applied via resize after create. (JSON object) |
577
- | `--auto-stop-interval-minutes <number>` | Minutes of inactivity before the platform worker idle-stops the sandbox. -1 means always on. 0 is rejected. Omit for the platform default. Provider-native timers are optional backup. |
578
- | `--lifecycle <string>` | What may make the sandbox disappear on its own. ephemeral: every stop wipes the VM and its disk, and the next start runs its Compose project again (edits in the project folder kept, everything else gone; locks too). auto_delete (default): a stop keeps the disk, and the record goes autoDeleteAfterDays after the stop. keep: never removed automatically. Omit for the image label ghostdock.ephemeral, else auto_delete. ephemeral is chosen here only. |
579
- | `--auto-delete-after-days <integer>` | Days the sandbox stays stopped before the platform worker deletes the record (0–365; 0 deletes it when it stops). Omit for the platform default (14). Not with keep. A container a person locked holds it. |
580
- | `--sandbox-provider-id <string>` | Configured sandbox-provider instance id from providers list (not the provider kind). Omit to use the organization default (the org choice, else the platform default); if that provider lacks a capability this create needs, the first listed provider that accepts new sandboxes and has it is used. When no provider fits, the call fails with a not-configured error. |
581
- | `--environment <object>` | Environment to give this sandbox. organization: names of organization entries (from env list) to export under their own names. bindings: remap org entries onto slot names ({ name: slot, organization: orgEntryName }). local: sandbox-only variables/secrets to create with the sandbox (kind required for each). Both land as ordinary process environment variables ($NAME / process.env.NAME); a local entry overrides an organization entry of the same name. When booting from an organization snapshot, omit organization/bindings/local to keep manifest env defaults, but still supply every name in requiredEnvironment (via organization, bindings, or local). Otherwise a sandbox gets nothing unless listed here. (JSON object) |
582
- | `--auto-wake` | Same as urls[].autoWake on sandboxes create. Default true for the minted URL. |
583
- | `--public` | Same as urls[].public on sandboxes create. Default true for the minted URL. |
577
+ | `--auto-stop-interval-minutes <number>` | Minutes of inactivity before the platform worker idle-stops the VM. -1 means always on. 0 is rejected. Omit for the platform default. Provider-native timers are optional backup. |
578
+ | `--lifecycle <string>` | What may make the VM disappear on its own. ephemeral: every stop wipes the VM and its disk, and the next start runs its Compose project again (edits in the project folder kept, everything else gone; locks too). auto_delete (default): a stop keeps the disk, and the record goes autoDeleteAfterDays after the stop. keep: never removed automatically. Omit for the image label ghostdock.ephemeral, else auto_delete. ephemeral is chosen here only. |
579
+ | `--auto-delete-after-days <integer>` | Days the VM stays stopped before the platform worker deletes the record (0–365; 0 deletes it when it stops). Omit for the platform default (14). Not with keep. A container a person locked holds it. |
580
+ | `--provider <string>` | Provider id from provider list (not the provider kind). Omit to use the organization default (the org choice, else the platform default); if that provider lacks a capability this create needs, the first listed provider that accepts new VMs and has it is used. When no provider fits, the call fails with a not-configured error. |
581
+ | `--environment <object>` | Environment to give this VM. organization: names of organization entries (from env list) to export under their own names. bindings: remap org entries onto slot names ({ name: slot, organization: orgEntryName }). local: VM-only variables/secrets to create with the VM (kind required for each). Both land as ordinary process environment variables ($NAME / process.env.NAME); a local entry overrides an organization entry of the same name. When booting from an organization snapshot, omit organization/bindings/local to keep manifest env defaults, but still supply every name in requiredEnvironment (via organization, bindings, or local). Otherwise a VM gets nothing unless listed here. (JSON object) |
582
+ | `--auto-wake` | Same as urls[].autoWake on vm create. Default true for the minted URL. |
583
+ | `--public` | Same as urls[].public on vm create. Default true for the minted URL. |
584
584
 
585
- MCP tool: `projects_redeploy`.
585
+ MCP tool: `project_redeploy`.
586
586
 
587
- ### `ghostdock projects update`
587
+ ### `ghostdock project update`
588
588
 
589
589
  Rename a project.
590
590
 
591
591
  ```
592
- ghostdock projects update <project-id> --display-name <string> [flags]
592
+ ghostdock project update <project-id> --display-name <string> [flags]
593
593
  ```
594
594
 
595
595
  | Argument | Description |
596
596
  | --- | --- |
597
- | `<project-id>` | Project id, from projects list (projects publish returns it too). Required. |
598
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
597
+ | `<project-id>` | Project id, from project list (project publish returns it too). Required. |
598
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
599
599
  | `--display-name <string>` | New name. Null or empty clears it. Required. |
600
600
 
601
- MCP tool: `projects_update`.
601
+ MCP tool: `project_update`.
602
602
 
603
- ## `ghostdock providers`
603
+ ## `ghostdock provider`
604
604
 
605
- Sandbox providers of an organization.
605
+ Providers of an organization.
606
606
 
607
- ### `ghostdock providers disconnect`
607
+ ### `ghostdock provider disconnect`
608
608
 
609
- Disconnect one of the organization’s own sandbox providers. Owner or admin. Fails while sandboxes still use it. If organization snapshots live on it, the first call fails: pass confirmLinkedDeletion to delete them permanently. Also frees its custom domain and removes incomplete Incus setups; a default provider falls back to the platform default.
609
+ Disconnect one of the organization’s own providers. Owner or admin. Fails while VMs still use it. If organization snapshots live on it, the first call fails: pass confirmLinkedDeletion to delete them permanently. Also frees its custom domain and removes incomplete Incus setups; a default provider falls back to the platform default.
610
610
 
611
611
  ```
612
- ghostdock providers disconnect <sandbox-provider-id> [flags]
612
+ ghostdock provider disconnect <provider> [flags]
613
613
  ```
614
614
 
615
615
  | Argument | Description |
616
616
  | --- | --- |
617
- | `<sandbox-provider-id>` | Sandbox provider id, from providers list. Required. |
618
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
617
+ | `<provider>` | Provider id, from provider list. Required. |
618
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
619
619
  | `--confirm-linked-deletion` | Required when this provider still has organization snapshots. Permanently deletes those snapshots, then disconnects. |
620
620
 
621
- MCP tool: `providers_disconnect`.
621
+ MCP tool: `provider_disconnect`.
622
622
 
623
- ### `ghostdock providers list`
623
+ ### `ghostdock provider list`
624
624
 
625
- List the sandbox providers an organization can create sandboxes on. Includes its own connected providers and the platform providers it may use, in fallback order. Use an item id as sandboxProviderId. Only items with acceptsNewSandboxes true take new sandboxes; an own provider stays incomplete until customDomain.status is active. defaultSandboxProviderId is the effective default. Read the sandboxes skill (`ghostdock skills get sandboxes`) for the details.
625
+ List the providers an organization can create VMs on. Includes its own connected providers and the platform providers it may use, in fallback order. Use an item id as provider. Only items with acceptsNewVms true take new VMs; an own provider stays incomplete until customDomain.status is active. defaultProviderId is the effective default. Read the vm skill (`ghostdock skill get vm`) for the details.
626
626
 
627
627
  ```
628
- ghostdock providers list [flags]
628
+ ghostdock provider list [flags]
629
629
  ```
630
630
 
631
631
  | Argument | Description |
632
632
  | --- | --- |
633
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
633
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
634
634
 
635
- MCP tool: `providers_list`.
635
+ MCP tool: `provider_list`.
636
636
 
637
- ### `ghostdock providers rename`
637
+ ### `ghostdock provider rename`
638
638
 
639
- Rename one of the organization’s own sandbox providers. Owner or admin. Platform providers cannot be renamed; names must be unique in the organization.
639
+ Rename one of the organization’s own providers. Owner or admin. Platform providers cannot be renamed; names must be unique in the organization.
640
640
 
641
641
  ```
642
- ghostdock providers rename <sandbox-provider-id> --name <string> [flags]
642
+ ghostdock provider rename <provider> --name <string> [flags]
643
643
  ```
644
644
 
645
645
  | Argument | Description |
646
646
  | --- | --- |
647
- | `<sandbox-provider-id>` | Sandbox provider id, from providers list. Required. |
647
+ | `<provider>` | Provider id, from provider list. Required. |
648
648
  | `--name <string>` | New name, unique in the organization. Required. |
649
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
649
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
650
650
 
651
- MCP tool: `providers_rename`.
651
+ MCP tool: `provider_rename`.
652
652
 
653
- ### `ghostdock providers set-default`
653
+ ### `ghostdock provider set-default`
654
654
 
655
- Set the provider used when a create omits sandboxProviderId. Applies to sandboxes create, projects publish and projects redeploy. Pass an own connected provider or a platform provider that accepts new sandboxes; pass null (or platformDefaultSandboxProviderId) to follow the platform default. Owner or admin.
655
+ Set the provider used when a create omits provider. Applies to vm create, project publish and project redeploy. Pass an own connected provider or a platform provider that accepts new VMs; pass null (or platformDefaultProviderId) to follow the platform default. Owner or admin.
656
656
 
657
657
  ```
658
- ghostdock providers set-default <sandbox-provider-id> [flags]
658
+ ghostdock provider set-default <provider> [flags]
659
659
  ```
660
660
 
661
661
  | Argument | Description |
662
662
  | --- | --- |
663
- | `<sandbox-provider-id>` | Instance id from providers list (own or platform), or null to follow the platform default. Passing platformDefaultSandboxProviderId also follows the platform default; it is never pinned. Required. |
664
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
663
+ | `<provider>` | Instance id from provider list (own or platform), or null to follow the platform default. Passing platformDefaultProviderId also follows the platform default; it is never pinned. Required. |
664
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
665
665
 
666
- MCP tool: `providers_set_default`.
666
+ MCP tool: `provider_set_default`.
667
667
 
668
- ### `ghostdock providers start-incus`
668
+ ### `ghostdock provider start-incus`
669
669
 
670
- Start connecting an Incus host as a sandbox provider. Owner or admin. Returns sshPublicKey and aiSetupPrompt; then call providers verify-incus. To finish an incomplete setup, reuse it from providers list instead of starting again. Read the incus-setup skill (`ghostdock skills get incus-setup`) first.
670
+ Start connecting an Incus host as a provider. Owner or admin. Returns sshPublicKey and aiSetupPrompt; then call provider verify-incus. To finish an incomplete setup, reuse it from provider list instead of starting again. Read the incus-setup skill (`ghostdock skill get incus-setup`) first.
671
671
 
672
672
  ```
673
- ghostdock providers start-incus [flags]
673
+ ghostdock provider start-incus [flags]
674
674
  ```
675
675
 
676
676
  | Argument | Description |
677
677
  | --- | --- |
678
678
  | `--name <string>` | Name for the new provider. Optional. |
679
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
679
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
680
680
 
681
- MCP tool: `providers_start_incus`.
681
+ MCP tool: `provider_start_incus`.
682
682
 
683
- ### `ghostdock providers verify-incus`
683
+ ### `ghostdock provider verify-incus`
684
684
 
685
- Check or finish connecting an Incus host. Owner or admin. Connects over SSH with the stored key and checks Incus 6.3+, skopeo and umoci. Omit sshHost to re-check the stored address; pass it (with the other host fields) only to move the provider. A failed check marks the provider error. Read the incus-setup skill (`ghostdock skills get incus-setup`).
685
+ Check or finish connecting an Incus host. Owner or admin. Connects over SSH with the stored key and checks Incus 6.3+, skopeo and umoci. Omit sshHost to re-check the stored address; pass it (with the other host fields) only to move the provider. A failed check marks the provider error. Read the incus-setup skill (`ghostdock skill get incus-setup`).
686
686
 
687
687
  ```
688
- ghostdock providers verify-incus <sandbox-provider-id> [flags]
688
+ ghostdock provider verify-incus <provider> [flags]
689
689
  ```
690
690
 
691
691
  | Argument | Description |
692
692
  | --- | --- |
693
- | `<sandbox-provider-id>` | Sandbox provider id, from providers list. Required. |
693
+ | `<provider>` | Provider id, from provider list. Required. |
694
694
  | `--ssh-host <string>` | Host to SSH to. Omit to re-check the stored address; pass it only to set up or move the provider. |
695
695
  | `--ssh-port <integer>` | SSH port. Default 22. |
696
696
  | `--ssh-user <string>` | SSH login. Default incus-user. |
697
697
  | `--ingress-host <string>` | Public hostname for HTTP(S) when it is not the SSH host (also the DNS A/AAAA target). |
698
- | `--ssh-proxy-port <integer>` | Port for sandbox SSH on the host. Default 2222. |
698
+ | `--ssh-proxy-port <integer>` | Port for VM SSH on the host. Default 2222. |
699
699
  | `--name <string>` | New name. Optional. |
700
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
700
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
701
701
 
702
- MCP tool: `providers_verify_incus`.
702
+ MCP tool: `provider_verify_incus`.
703
703
 
704
704
  ## `ghostdock registry`
705
705
 
@@ -715,8 +715,8 @@ ghostdock registry credentials [flags]
715
715
 
716
716
  | Argument | Description |
717
717
  | --- | --- |
718
- | `--org <value>` | Organization id or slug, from `ghostdock organizations list` (default: GHOSTDOCK_ORG, then `ghostdock organizations use`). |
719
- | `--provider <value>` | Sandbox provider id. Omit for the provider `sandboxes create` would pick (org default, else platform default, else the first that fits). |
718
+ | `--org <value>` | Organization id or slug, from `ghostdock organization list` (default: GHOSTDOCK_ORG, then `ghostdock organization use`). |
719
+ | `--provider <value>` | Provider id. Omit for the provider `vm create` would pick (org default, else platform default, else the first that fits). |
720
720
 
721
721
  MCP tool: `registry_credentials`.
722
722
 
@@ -730,981 +730,1075 @@ ghostdock registry login [flags]
730
730
 
731
731
  | Argument | Description |
732
732
  | --- | --- |
733
- | `--org <value>` | Organization id or slug, from `ghostdock organizations list` (default: GHOSTDOCK_ORG, then `ghostdock organizations use`). |
734
- | `--provider <value>` | Sandbox provider id. Omit for the provider `sandboxes create` would pick (org default, else platform default, else the first that fits). |
733
+ | `--org <value>` | Organization id or slug, from `ghostdock organization list` (default: GHOSTDOCK_ORG, then `ghostdock organization use`). |
734
+ | `--provider <value>` | Provider id. Omit for the provider `vm create` would pick (org default, else platform default, else the first that fits). |
735
735
 
736
- ## `ghostdock sandboxes`
736
+ ## `ghostdock site`
737
737
 
738
- Create, run and manage sandboxes.
738
+ Static sites on the CDN.
739
739
 
740
- ### `ghostdock sandboxes build`
740
+ ### `ghostdock site publish`
741
741
 
742
- Create a sandbox from a local Dockerfile or Compose directory. Zips the directory (or takes --zip) and builds it on the sandbox provider; use it when the Dockerfile copies local files or the Compose project has build contexts.
742
+ Publish a local directory or ZIP to the CDN.
743
743
 
744
744
  ```
745
- ghostdock sandboxes build [path] --kind <value> [flags]
745
+ ghostdock site publish [path] [flags]
746
746
  ```
747
747
 
748
748
  | Argument | Description |
749
749
  | --- | --- |
750
- | `--org <value>` | Organization id or slug, from `ghostdock organizations list` (default: GHOSTDOCK_ORG, then `ghostdock organizations use`). |
751
- | `--kind <value>` | dockerfile or compose. Required. |
752
- | `--sandbox-provider-id <value>` | Configured sandbox-provider instance id (omit for the organization default). |
753
- | `--display-name <value>` | Optional sandbox display name. |
754
- | `--zip <value>` | Local ZIP of the build directory (Dockerfile or compose file at the zip root). |
755
- | `<path>` | Build directory to zip and create from. |
756
-
757
- ### `ghostdock sandboxes commands`
750
+ | `--org <value>` | Organization id or slug, from `ghostdock organization list` (default: GHOSTDOCK_ORG, then `ghostdock organization use`). |
751
+ | `--display-name <value>` | Optional site display name. |
752
+ | `--zip <value>` | Local ZIP file to publish. |
753
+ | `<path>` | File or directory to publish (additional paths are allowed). |
758
754
 
759
- Run commands in a sandbox and read their output.
755
+ MCP tool: `site_publish`.
760
756
 
761
- ### `ghostdock sandboxes commands get`
757
+ ### `ghostdock site unpublish`
762
758
 
763
- Get a shell command’s status and exit code.
759
+ Take a published static site offline.
764
760
 
765
761
  ```
766
- ghostdock sandboxes commands get <command-id> --sandbox-id <string> --session-id <string> [flags]
762
+ ghostdock site unpublish <site-id> [flags]
767
763
  ```
768
764
 
769
765
  | Argument | Description |
770
766
  | --- | --- |
771
- | `<command-id>` | Command id returned by sandboxes commands run. Required. |
772
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
773
- | `--sandbox-id <string>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
774
- | `--container <string>` | Container to work in, by name, from sandboxes containers list. Default: the sandbox’s default container, else the one running container. With several running and no default the call fails and lists them. |
775
- | `--session-id <string>` | Session id returned by sandboxes commands run together with the commandId. Required. |
776
- | `--start` | Start the container first when it is not running, without asking. |
767
+ | `<site-id>` | Site id: the slug in the public URL, as returned by site publish or app list. Required. |
768
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
777
769
 
778
- MCP tool: `sandboxes_commands_get`.
770
+ MCP tool: `site_unpublish`.
779
771
 
780
- ### `ghostdock sandboxes commands kill`
772
+ ## `ghostdock skill`
781
773
 
782
- Interrupt a running shell command.
774
+ List and read Agent Skills (same catalog as MCP skill://index.json).
775
+
776
+ ### `ghostdock skill get`
777
+
778
+ Print one SKILL.md (URI from the discovery index, or a skill name).
783
779
 
784
780
  ```
785
- ghostdock sandboxes commands kill <command-id> --sandbox-id <string> --session-id <string> [flags]
781
+ ghostdock skill get <uri>
786
782
  ```
787
783
 
788
784
  | Argument | Description |
789
785
  | --- | --- |
790
- | `<command-id>` | Command id returned by sandboxes commands run. Required. |
791
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
792
- | `--sandbox-id <string>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
793
- | `--container <string>` | Container to work in, by name, from sandboxes containers list. Default: the sandbox’s default container, else the one running container. With several running and no default the call fails and lists them. |
794
- | `--session-id <string>` | Session id returned by sandboxes commands run together with the commandId. Required. |
795
- | `--start` | Start the container first when it is not running, without asking. |
786
+ | `<uri>` | skill:// URI, org/name, or skill name. Required. |
796
787
 
797
- MCP tool: `sandboxes_commands_kill`.
788
+ MCP tool: `skill_get`.
798
789
 
799
- ### `ghostdock sandboxes commands logs`
790
+ ### `ghostdock skill list`
800
791
 
801
- Get a page of a shell command’s stdout and stderr.
792
+ List the Agent Skills discovery index.
802
793
 
803
794
  ```
804
- ghostdock sandboxes commands logs <command-id> --sandbox-id <string> --session-id <string> [flags]
795
+ ghostdock skill list
805
796
  ```
806
797
 
807
- | Argument | Description |
808
- | --- | --- |
809
- | `<command-id>` | Command id returned by sandboxes commands run. Required. |
810
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
811
- | `--sandbox-id <string>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
812
- | `--container <string>` | Container to work in, by name, from sandboxes containers list. Default: the sandbox’s default container, else the one running container. With several running and no default the call fails and lists them. |
813
- | `--session-id <string>` | Session id returned by sandboxes commands run together with the commandId. Required. |
814
- | `--offset <integer>` | Character offset to continue reading from. Default 0. |
815
- | `--start` | Start the container first when it is not running, without asking. |
798
+ MCP tool: `skill_list`.
799
+
800
+ ## `ghostdock snapshot`
816
801
 
817
- MCP tool: `sandboxes_commands_logs`.
802
+ VM snapshots.
818
803
 
819
- ### `ghostdock sandboxes commands run`
804
+ ### `ghostdock snapshot create`
820
805
 
821
- Run a shell command in a sandbox. Waits up to 120 seconds, then returns sessionId and commandId to poll. Starts the sandbox when allowed. Sessions do not survive idle-stop: for a process that must keep running, read the sandbox-boot skill (`ghostdock skills get sandbox-boot`). Never put secret values in the command; it is logged.
806
+ Save a VM’s filesystem as a reusable organization snapshot. The VM must be stopped, unless stopAndResume. Captures its URLs and environment into a manifest (secrets as required, without values). Waits up to ~120 seconds; if still pending it returns timedOut, then poll snapshot get. Setting secret values here is allowed; prefer the Ghostdock CLI so they stay out of the conversation.
822
807
 
823
808
  ```
824
- ghostdock sandboxes commands run <sandbox-id> --command <string> [flags]
809
+ ghostdock snapshot create <vm> --name <string> [flags]
825
810
  ```
826
811
 
827
812
  | Argument | Description |
828
813
  | --- | --- |
829
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
830
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
831
- | `--container <string>` | Container to work in, by name, from sandboxes containers list. Default: the sandbox’s default container, else the one running container. With several running and no default the call fails and lists them. |
832
- | `--command <string>` | Shell command to run. Never include secret values: commands are logged. Required. |
833
- | `--session-id <string>` | Session from sandboxes shells create, to keep cwd and environment from earlier commands. Omit for a one-off session. |
834
- | `--cwd <string>` | Directory to run the command in. |
835
- | `--wait-seconds <number>` | Seconds to wait before returning handles to poll: 1 to 120, default 120. |
836
- | `--start` | Start the container first when it is not running, without asking. |
837
-
838
- MCP tool: `sandboxes_commands_run`.
839
-
840
- ### `ghostdock sandboxes containers`
814
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
815
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
816
+ | `--name <string>` | Snapshot name, unique in the organization. Required. |
817
+ | `--stop-and-resume` | When the VM is running: stop it, snapshot, then start it again. Without this it must already be stopped. |
818
+ | `--include-secret-values <array>` | Names of VM-local secrets whose values to embed in the snapshot. Organization secrets cannot be copied. (JSON array) |
819
+ | `--manifest <object>` | Replaces the captured URLs and environment entirely (no merge). An omitted ephemeral is copied from the VM. Secret values are stored encrypted. (JSON object) |
841
820
 
842
- Containers of a sandbox’s Docker engine.
821
+ MCP tool: `snapshot_create`.
843
822
 
844
- ### `ghostdock sandboxes containers list`
823
+ ### `ghostdock snapshot delete`
845
824
 
846
- List the containers of a sandbox, running or not. Each with state, health, restart policy, ports, Compose project and service, its lock (locked, and whether a person or its ghostdock.lock label decided), ghostdock.* labels, and which one is the default. A stopped sandbox lists none (it is not started for this).
825
+ Permanently delete an organization snapshot (provider artifact and record).
847
826
 
848
827
  ```
849
- ghostdock sandboxes containers list <sandbox-id> [flags]
828
+ ghostdock snapshot delete <snapshot-id> [flags]
850
829
  ```
851
830
 
852
831
  | Argument | Description |
853
832
  | --- | --- |
854
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
855
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
833
+ | `<snapshot-id>` | Snapshot id from snapshot list (the provider snapshot name) or its database id. Required. |
834
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
856
835
 
857
- MCP tool: `sandboxes_containers_list`.
836
+ MCP tool: `snapshot_delete`.
858
837
 
859
- ### `ghostdock sandboxes containers lock`
838
+ ### `ghostdock snapshot get`
860
839
 
861
- Lock a container against removal. A locked container cannot be removed, renamed or recreated through Docker (docker rm, compose down, a compose up that would recreate it) until it is unlocked here; start, stop and restart still work. It also pauses the sandbox’s auto-delete. An ephemeral sandbox’s stop still wipes it. Never starts the sandbox: a stopped one gets the lock at its next start.
840
+ Get one snapshot with its manifest and required environment, URLs and MCPs. Returns a redacted manifest with requiredEnvironment / requiredUrls / requiredMcps. Poll it after snapshot create while status is pending.
862
841
 
863
842
  ```
864
- ghostdock sandboxes containers lock <sandbox-id> <container> [flags]
843
+ ghostdock snapshot get <snapshot-id> [flags]
865
844
  ```
866
845
 
867
846
  | Argument | Description |
868
847
  | --- | --- |
869
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
870
- | `<container>` | Container, by name. Required. |
871
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
848
+ | `<snapshot-id>` | Snapshot id from snapshot list (the provider snapshot name) or its database id. Required. |
849
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
872
850
 
873
- MCP tool: `sandboxes_containers_lock`.
851
+ MCP tool: `snapshot_get`.
874
852
 
875
- ### `ghostdock sandboxes containers logs`
853
+ ### `ghostdock snapshot list`
876
854
 
877
- Read a container’s output, as docker logs does. Oldest first, each line with its stream (stdout, stderr) and time. The last tail lines (default 200), or with after only the lines after that time: pass the last line’s time to follow. truncated says lines were left out. A stopped sandbox has none (it is not started for this).
855
+ List the snapshots an organization can boot VMs from. Each item has status (pending, active, error), the provider that holds it (providerId; boot it there), vmCount, and a redacted manifest with requiredEnvironment / requiredUrls / requiredMcps.
878
856
 
879
857
  ```
880
- ghostdock sandboxes containers logs <sandbox-id> <container> [flags]
858
+ ghostdock snapshot list [flags]
881
859
  ```
882
860
 
883
861
  | Argument | Description |
884
862
  | --- | --- |
885
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
886
- | `<container>` | Container, by name. Required. |
887
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
888
- | `--tail <integer>` | The last N lines (at most 5000). |
889
- | `--after <string>` | Only lines after this time: the time of the last line already read. |
890
- | `--follow` | Keep printing new lines until Ctrl-C. |
891
- | `--timestamps` | Put each line's time in front of it. |
863
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
892
864
 
893
- MCP tool: `sandboxes_containers_logs`.
865
+ MCP tool: `snapshot_list`.
894
866
 
895
- ### `ghostdock sandboxes containers restart`
867
+ ### `ghostdock snapshot update-manifest`
896
868
 
897
- Restart a container, as docker restart does (stopping as docker stop does). Starts the sandbox when needed.
869
+ Replace a snapshot’s manifest (URLs, environment, MCPs). Does not change the snapshot itself. Secret values in the body are stored encrypted; the response is redacted. Setting secret values here is allowed; prefer the Ghostdock CLI so they stay out of the conversation.
898
870
 
899
871
  ```
900
- ghostdock sandboxes containers restart <sandbox-id> <container> [flags]
872
+ ghostdock snapshot update-manifest <snapshot-id> --manifest <object> [flags]
901
873
  ```
902
874
 
903
875
  | Argument | Description |
904
876
  | --- | --- |
905
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
906
- | `<container>` | Container, by name. Required. |
907
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
877
+ | `<snapshot-id>` | Snapshot id from snapshot list (the provider snapshot name) or its database id. Required. |
878
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
879
+ | `--manifest <object>` | The new manifest; replaces the stored one. An omitted ephemeral keeps the stored value. Secret values are stored encrypted. (JSON object) Required. |
880
+
881
+ MCP tool: `snapshot_update_manifest`.
908
882
 
909
- MCP tool: `sandboxes_containers_restart`.
883
+ ## `ghostdock template`
910
884
 
911
- ### `ghostdock sandboxes containers start`
885
+ ### `ghostdock template create`
912
886
 
913
- Start a stopped container, as docker start does. A running container stays as it is. Starts the sandbox when needed.
887
+ Save a VM create request as a template of the organization. Its members and agents make it with `ghostdock vm up <name>`. spec is what vm create takes without the organization’s own things: source (an image ref, Dockerfile, Compose files or a Compose reference; no snapshot or catalog id) and defaults (resources, lifecycle, restart, urls, mcps). Environment values stay out: a template that needs some declares them as ghostdock.env labels. A name the platform has too is allowed: the answer says shadows true, and the organization’s template wins for its members.
914
888
 
915
889
  ```
916
- ghostdock sandboxes containers start <sandbox-id> <container> [flags]
890
+ ghostdock template create --name <string> --title <string> --spec <object> [flags]
917
891
  ```
918
892
 
919
893
  | Argument | Description |
920
894
  | --- | --- |
921
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
922
- | `<container>` | Container, by name. Required. |
923
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
895
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
896
+ | `--name <string>` | Short name, unique in the organization: lower-case words joined by hyphens, e.g. postgres-pgadmin. Required. |
897
+ | `--title <string>` | Title on the tile. Required. |
898
+ | `--description <string>` | What it is for, in a sentence or two. |
899
+ | `--icon <string>` | An Iconify class the app bundles (i-simple-icons-postgresql, i-lucide-database) or an https image URL. Omit for the default icon. |
900
+ | `--spec <object>` | The create request: { source, resources?, autoStopIntervalMinutes?, lifecycle?, autoDeleteAfterDays?, restart?, urls?, mcps? }, the same fields vm create takes. (JSON object) Required. |
924
901
 
925
- MCP tool: `sandboxes_containers_start`.
902
+ MCP tool: `template_create`.
926
903
 
927
- ### `ghostdock sandboxes containers stop`
904
+ ### `ghostdock template delete`
928
905
 
929
- Stop a container, as docker stop does. It gets its own stop signal, then a kill after its own stop timeout. It stays stopped while the sandbox sleeps and wakes, as Docker keeps a stopped container stopped, unless its restart policy is always. On a stopped sandbox it does nothing (note sandbox_stopped). A lock does not block it. note says when it was the default container or the last one running: then SSH, commands and files have nowhere to land until one runs.
906
+ Delete a template of the organization by its name. VMs made from it keep running; a platform template it shadowed answers to the name again.
930
907
 
931
908
  ```
932
- ghostdock sandboxes containers stop <sandbox-id> <container> [flags]
909
+ ghostdock template delete <template> [flags]
933
910
  ```
934
911
 
935
912
  | Argument | Description |
936
913
  | --- | --- |
937
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
938
- | `<container>` | Container, by name. Required. |
939
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
914
+ | `<template>` | The organization’s template, by name. Required. |
915
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
940
916
 
941
- MCP tool: `sandboxes_containers_stop`.
917
+ MCP tool: `template_delete`.
942
918
 
943
- ### `ghostdock sandboxes containers unlock`
919
+ ### `ghostdock template list`
944
920
 
945
- Unlock a container so Docker can remove or recreate it. Also one its image locked with the ghostdock.lock label. Never starts the sandbox: a stopped one gets it at its next start, and an overdue auto-delete it held goes ahead.
921
+ List the templates to create a VM from (headless, desktop, nginx, …). The platform’s ready-made VMs and the organization’s own, each with scope (platform or organization), title, description and the create request it stands for (spec: source plus defaults such as URLs and resources). A name means the organization’s template first: one with shadows true hides the platform template of the same name (shadowed true), which vm up --platform still reaches. Create one with vm up.
946
922
 
947
923
  ```
948
- ghostdock sandboxes containers unlock <sandbox-id> <container> [flags]
924
+ ghostdock template list [flags]
949
925
  ```
950
926
 
951
927
  | Argument | Description |
952
928
  | --- | --- |
953
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
954
- | `<container>` | Container, by name. Required. |
955
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
929
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
956
930
 
957
- MCP tool: `sandboxes_containers_unlock`.
931
+ MCP tool: `template_list`.
958
932
 
959
- ### `ghostdock sandboxes create`
933
+ ### `ghostdock template update`
960
934
 
961
- Create a sandbox from a snapshot, OCI image, Dockerfile or Compose files. Inline content only: for a directory or ZIP (Dockerfile COPY/ADD, Compose build files) use `ghostdock sandboxes build`. Snapshots and catalog images can require environment entries, URL ports and MCP names (requiredEnvironment / requiredUrls / requiredMcps); a missing environment entry fails with its names (missingEnvironment), and removing a required URL or MCP fails with them (missingUrls / missingMcps). Every source but a snapshot becomes a Compose project in the sandbox, run once with docker compose up -d; after that Docker is the truth. Returns once the project is up, with `boot`: how long the sandbox (VM) and the project's compose up took, each in ms, and the images it pulled. Idle-stop and auto-delete apply (defaults 20 minutes / 14 days). Read the sandboxes skill (`ghostdock skills get sandboxes`) for sources, manifests, lifecycle and providers.
935
+ Change a template of the organization by its name. The fields given replace the stored ones (a spec replaces the whole spec). Platform templates are changed by platform admins only.
962
936
 
963
937
  ```
964
- ghostdock sandboxes create --source <object> [flags]
938
+ ghostdock template update <template> [flags]
965
939
  ```
966
940
 
967
941
  | Argument | Description |
968
942
  | --- | --- |
969
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
970
- | `--display-name <string>` | Display name for the sandbox. Optional. |
971
- | `--source <object>` | What the sandbox boots from. Required. "image" boots an org catalog row by id ({ id } from images list / images get — images add OCI bookmarks, images add-dockerfile, and images add-compose rows) or any OCI ref ({ ref }); "dockerfile" builds inline Dockerfile text only (ghostdock.* LABEL lines parsed for manifest; this tool has no build directory, so COPY/ADD of local files fails — use the CLI `ghostdock sandboxes build --kind dockerfile` with a directory or ZIP); "compose" runs the given inline files with docker compose up -d (must include docker-compose.yml/yaml or compose.yml/yaml; ghostdock.* service labels parsed for manifest). Every source but a snapshot becomes a Compose project in /srv/ghostdock/<sandbox name>, run once; an image is one service named after it, a Dockerfile the service app. A Compose project that needs extra files is not accepted here — use `ghostdock sandboxes build --kind compose`. "compose" also takes a published Compose project instead of files ({ reference: "oci://…", override? }): it runs through include:, the override merged into it. Image, dockerfile, and compose sources never appear in snapshots list. Published static sites use sites publish (CDN), not a snapshot. (JSON object) Required. |
972
- | `--restart <string>` | Restart policy of the service an image or a Dockerfile becomes, Docker's names: unless-stopped (default), always, on-failure, or no (it does not come back after the sandbox sleeps). Not for Compose: its files set restart:. |
973
- | `--resources <object>` | Compute sizing. For image/dockerfile/compose: layered on platform defaults when omitted. For snapshot: optional override applied via resize after create. (JSON object) |
974
- | `--auto-stop-interval-minutes <number>` | Minutes of inactivity before the platform worker idle-stops the sandbox. -1 means always on. 0 is rejected. Omit for the platform default. Provider-native timers are optional backup. |
975
- | `--lifecycle <string>` | What may make the sandbox disappear on its own. ephemeral: every stop wipes the VM and its disk, and the next start runs its Compose project again (edits in the project folder kept, everything else gone; locks too). auto_delete (default): a stop keeps the disk, and the record goes autoDeleteAfterDays after the stop. keep: never removed automatically. Omit for the image label ghostdock.ephemeral, else auto_delete. ephemeral is chosen here only. |
976
- | `--auto-delete-after-days <integer>` | Days the sandbox stays stopped before the platform worker deletes the record (0–365; 0 deletes it when it stops). Omit for the platform default (14). Not with keep. A container a person locked holds it. |
977
- | `--sandbox-provider-id <string>` | Configured sandbox-provider instance id from providers list (not the provider kind). Omit to use the organization default (the org choice, else the platform default); if that provider lacks a capability this create needs, the first listed provider that accepts new sandboxes and has it is used. When no provider fits, the call fails with a not-configured error. |
978
- | `--environment <object>` | Environment to give this sandbox. organization: names of organization entries (from env list) to export under their own names. bindings: remap org entries onto slot names ({ name: slot, organization: orgEntryName }). local: sandbox-only variables/secrets to create with the sandbox (kind required for each). Both land as ordinary process environment variables ($NAME / process.env.NAME); a local entry overrides an organization entry of the same name. When booting from an organization snapshot, omit organization/bindings/local to keep manifest env defaults, but still supply every name in requiredEnvironment (via organization, bindings, or local). Otherwise a sandbox gets nothing unless listed here. (JSON object) |
979
- | `--image-base <string>` | How the disk is made for one of Ghostdock's platform images: auto (default) clones the host's image base, a disk with the image already on it, when there is one; off always starts from an empty disk that pulls the image. For tests and comparisons; other images always start empty. |
980
- | `--urls <array>` | Changes to the image’s or snapshot’s URLs, keyed by port. Omit for the image URLs as they are; otherwise you get the image URLs plus yours: an entry on the same port replaces that URL completely (omitted fields take their defaults), and { port, remove: true } drops it; removing a port the image does not declare does nothing. A required port cannot be removed. TCP URLs are always public. (JSON array) |
981
- | `--mcps <array>` | Changes to the image’s or snapshot’s MCP exposures, keyed by name. Omit for the image MCPs as they are; otherwise you get the image MCPs plus yours: an entry with the same name replaces that MCP completely, and { name, remove: true } drops it; removing a name the image does not declare does nothing. A required MCP (requiredMcps) cannot be removed. (JSON array) |
943
+ | `<template>` | The organization’s template, by name. Required. |
944
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
945
+ | `--name <string>` | A new name; vm up answers to it only. |
946
+ | `--title <string>` | Title on the tile. |
947
+ | `--description <string>` | What it is for. |
948
+ | `--icon <string>` | Iconify class or https image URL; null for the default icon. |
949
+ | `--spec <object>` | The whole create request, as template create takes it. (JSON object) |
982
950
 
983
- MCP tool: `sandboxes_create`.
951
+ MCP tool: `template_update`.
984
952
 
985
- ### `ghostdock sandboxes default-container`
953
+ ## `ghostdock tools`
986
954
 
987
- Show, set or clear the sandbox’s default container. SSH, the terminal, files, commands and MCP land there when no container is named. Without container or clear it only shows the setting.
955
+ List available agent tools.
988
956
 
989
957
  ```
990
- ghostdock sandboxes default-container <sandbox-id> [flags]
958
+ ghostdock tools
991
959
  ```
992
960
 
993
- | Argument | Description |
994
- | --- | --- |
995
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
996
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
997
- | `--container <string>` | Container to make the default, by name. The running sandbox must have it. |
998
- | `--clear` | Clear the default. |
999
- | `--start` | Start the container first when it is not running, without asking. |
961
+ ## `ghostdock vm`
1000
962
 
1001
- MCP tool: `sandboxes_default_container`.
963
+ Create, run and manage VMs.
1002
964
 
1003
- ### `ghostdock sandboxes delete`
965
+ ### `ghostdock vm build`
1004
966
 
1005
- Permanently delete a sandbox and its files. Refused while it has locked containers (sandbox_has_locked_containers, naming them) unless deleteLocked is true.
967
+ Create a VM from a local Dockerfile or Compose directory. Zips the directory (or takes --zip) and builds it on the provider; use it when the Dockerfile copies local files or the Compose project has build contexts.
1006
968
 
1007
969
  ```
1008
- ghostdock sandboxes delete <sandbox-id> [flags]
970
+ ghostdock vm build [path] --kind <value> [flags]
1009
971
  ```
1010
972
 
1011
973
  | Argument | Description |
1012
974
  | --- | --- |
1013
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1014
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1015
- | `--delete-locked` | Delete it with its locked containers. Without it, a locked container refuses the delete. |
1016
-
1017
- MCP tool: `sandboxes_delete`.
975
+ | `--org <value>` | Organization id or slug, from `ghostdock organization list` (default: GHOSTDOCK_ORG, then `ghostdock organization use`). |
976
+ | `--kind <value>` | dockerfile or compose. Required. |
977
+ | `--provider <value>` | Configured provider instance id (omit for the organization default). |
978
+ | `--display-name <value>` | Optional VM display name. |
979
+ | `--zip <value>` | Local ZIP of the build directory (Dockerfile or compose file at the zip root). |
980
+ | `<path>` | Build directory to zip and create from. |
1018
981
 
1019
- ### `ghostdock sandboxes env`
982
+ ### `ghostdock vm command`
1020
983
 
1021
- Environment of one sandbox.
984
+ Run commands in a VM and read their output.
1022
985
 
1023
- ### `ghostdock sandboxes env delete`
986
+ ### `ghostdock vm command get`
1024
987
 
1025
- Delete one of a sandbox’s own variables or secrets.
988
+ Get a shell command’s status and exit code.
1026
989
 
1027
990
  ```
1028
- ghostdock sandboxes env delete <name> --sandbox-id <string> [flags]
991
+ ghostdock vm command get <command-id> --vm <string> --session-id <string> [flags]
1029
992
  ```
1030
993
 
1031
994
  | Argument | Description |
1032
995
  | --- | --- |
1033
- | `<name>` | Environment variable name, e.g. DATABASE_URL. Letters, digits and underscores only. Case-sensitive; stored exactly as provided. Required. |
1034
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1035
- | `--sandbox-id <string>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1036
- | `--restart` | When true and the sandbox is running, stop then start after saving so processes pick up the change. Default: sync only. |
996
+ | `<command-id>` | Command id returned by vm command run. Required. |
997
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
998
+ | `--vm <string>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
999
+ | `--container <string>` | Container to work in, by name, from vm container list. Default: the VM’s default container, else the one running container. With several running and no default the call fails and lists them. |
1000
+ | `--session-id <string>` | Session id returned by vm command run together with the commandId. Required. |
1001
+ | `--start` | Start the container first when it is not running, without asking. |
1037
1002
 
1038
- MCP tool: `sandboxes_env_delete`.
1003
+ MCP tool: `vm_command_get`.
1039
1004
 
1040
- ### `ghostdock sandboxes env get`
1005
+ ### `ghostdock vm command kill`
1041
1006
 
1042
- Get a sandbox’s environment: selections, bindings and local entries. Shows each organization entry with whether it is selected, exportAs, and overriddenByLocal; secret values are withheld. Nothing is inherited.
1007
+ Interrupt a running shell command.
1043
1008
 
1044
1009
  ```
1045
- ghostdock sandboxes env get <sandbox-id> [flags]
1010
+ ghostdock vm command kill <command-id> --vm <string> --session-id <string> [flags]
1046
1011
  ```
1047
1012
 
1048
1013
  | Argument | Description |
1049
1014
  | --- | --- |
1050
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1051
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1015
+ | `<command-id>` | Command id returned by vm command run. Required. |
1016
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1017
+ | `--vm <string>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1018
+ | `--container <string>` | Container to work in, by name, from vm container list. Default: the VM’s default container, else the one running container. With several running and no default the call fails and lists them. |
1019
+ | `--session-id <string>` | Session id returned by vm command run together with the commandId. Required. |
1020
+ | `--start` | Start the container first when it is not running, without asking. |
1052
1021
 
1053
- MCP tool: `sandboxes_env_get`.
1022
+ MCP tool: `vm_command_kill`.
1054
1023
 
1055
- ### `ghostdock sandboxes env select`
1024
+ ### `ghostdock vm command logs`
1056
1025
 
1057
- Replace the organization entries a sandbox exports. Full replace: environment is the whole list ([] clears it), and omitting bindings clears the remaps. Running processes keep their old values until restarted (pass restart). Read the environment skill (`ghostdock skills get environment`).
1026
+ Get a page of a shell command’s stdout and stderr.
1058
1027
 
1059
1028
  ```
1060
- ghostdock sandboxes env select <sandbox-id> --environment <array> [flags]
1029
+ ghostdock vm command logs <command-id> --vm <string> --session-id <string> [flags]
1061
1030
  ```
1062
1031
 
1063
1032
  | Argument | Description |
1064
1033
  | --- | --- |
1065
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1066
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1067
- | `--environment <array>` | Organization catalogue entry names to export under their own names. Pass [] to clear plain selections. (JSON array) Required. |
1068
- | `--bindings <array>` | Slot-centric org bindings: export an organization entry under a (possibly different) sandbox env name. Omit to clear existing remaps (full replace). (JSON array) |
1069
- | `--restart` | When true and the sandbox is running, stop then start after saving so processes pick up the change. Default: sync only; already-running processes keep the old values until restarted. |
1034
+ | `<command-id>` | Command id returned by vm command run. Required. |
1035
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1036
+ | `--vm <string>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1037
+ | `--container <string>` | Container to work in, by name, from vm container list. Default: the VM’s default container, else the one running container. With several running and no default the call fails and lists them. |
1038
+ | `--session-id <string>` | Session id returned by vm command run together with the commandId. Required. |
1039
+ | `--offset <integer>` | Character offset to continue reading from. Default 0. |
1040
+ | `--start` | Start the container first when it is not running, without asking. |
1070
1041
 
1071
- MCP tool: `sandboxes_env_select`.
1042
+ MCP tool: `vm_command_logs`.
1072
1043
 
1073
- ### `ghostdock sandboxes env set`
1044
+ ### `ghostdock vm command run`
1074
1045
 
1075
- Create or replace one of a sandbox’s own variables or secrets. It overrides an organization entry of the same name. kind is required when creating. Setting secrets via this tool is allowed; prefer the Ghostdock CLI so values stay out of the conversation, and never put them in commands.
1046
+ Run a shell command in a VM. Waits up to 120 seconds, then returns sessionId and commandId to poll. Starts the VM when allowed. Sessions do not survive idle-stop: for a process that must keep running, read the vm-boot skill (`ghostdock skill get vm-boot`). Never put secret values in the command; it is logged.
1076
1047
 
1077
1048
  ```
1078
- ghostdock sandboxes env set <name> --sandbox-id <string> --value <string> [flags]
1049
+ ghostdock vm command run <vm> --command <string> [flags]
1079
1050
  ```
1080
1051
 
1081
1052
  | Argument | Description |
1082
1053
  | --- | --- |
1083
- | `<name>` | Environment variable name, e.g. DATABASE_URL. Letters, digits and underscores only. Case-sensitive; stored exactly as provided. Required. |
1084
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1085
- | `--sandbox-id <string>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1086
- | `--value <string>` | The value to store. A secret value can be replaced later but never read back. Required. |
1087
- | `--kind <string>` | Required when creating. Use "secret" for credentials; secret values can be replaced but never read back. Omit when updating to keep the existing kind. |
1088
- | `--comment <string>` | Optional note shown with the entry, e.g. what it is for. |
1089
- | `--restart` | When true and the sandbox is running, stop then start after saving so processes pick up the change. Default: sync only. |
1054
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1055
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1056
+ | `--container <string>` | Container to work in, by name, from vm container list. Default: the VM’s default container, else the one running container. With several running and no default the call fails and lists them. |
1057
+ | `--command <string>` | Shell command to run. Never include secret values: commands are logged. Required. |
1058
+ | `--session-id <string>` | Session from vm shell create, to keep cwd and environment from earlier commands. Omit for a one-off session. |
1059
+ | `--cwd <string>` | Directory to run the command in. |
1060
+ | `--wait-seconds <number>` | Seconds to wait before returning handles to poll: 1 to 120, default 120. |
1061
+ | `--start` | Start the container first when it is not running, without asking. |
1090
1062
 
1091
- MCP tool: `sandboxes_env_set`.
1063
+ MCP tool: `vm_command_run`.
1092
1064
 
1093
- ### `ghostdock sandboxes files`
1065
+ ### `ghostdock vm container`
1094
1066
 
1095
- Files inside a sandbox.
1067
+ Containers of a VM’s Docker engine.
1096
1068
 
1097
- ### `ghostdock sandboxes files list`
1069
+ ### `ghostdock vm container list`
1098
1070
 
1099
- List the files in a sandbox directory. Default: the container's start folder (its dir).
1071
+ List the containers of a VM, running or not. Each with state, health, restart policy, ports, Compose project and service, its lock (locked, and whether a person or its ghostdock.lock label decided), ghostdock.* labels, and which one is the default. A stopped VM lists none (it is not started for this).
1100
1072
 
1101
1073
  ```
1102
- ghostdock sandboxes files list <sandbox-id> [flags]
1074
+ ghostdock vm container list <vm> [flags]
1103
1075
  ```
1104
1076
 
1105
1077
  | Argument | Description |
1106
1078
  | --- | --- |
1107
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1108
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1109
- | `--container <string>` | Container to work in, by name, from sandboxes containers list. Default: the sandbox’s default container, else the one running container. With several running and no default the call fails and lists them. |
1110
- | `--path <string>` | Directory to list: absolute, or relative to the container's start folder (its dir: the login user's home, else WORKDIR, else /). Defaults to that folder. |
1111
- | `--start` | Start the container first when it is not running, without asking. |
1079
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1080
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1112
1081
 
1113
- MCP tool: `sandboxes_files_list`.
1082
+ MCP tool: `vm_container_list`.
1114
1083
 
1115
- ### `ghostdock sandboxes files read`
1084
+ ### `ghostdock vm container lock`
1116
1085
 
1117
- Read a file from a sandbox: utf8 text, or base64 for small binaries.
1086
+ Lock a container against removal. A locked container cannot be removed, renamed or recreated through Docker (docker rm, compose down, a compose up that would recreate it) until it is unlocked here; start, stop and restart still work. It also pauses the VM’s auto-delete. An ephemeral VM’s stop still wipes it. Never starts the VM: a stopped one gets the lock at its next start.
1118
1087
 
1119
1088
  ```
1120
- ghostdock sandboxes files read <path> --sandbox-id <string> [flags]
1089
+ ghostdock vm container lock <vm> <container> [flags]
1121
1090
  ```
1122
1091
 
1123
1092
  | Argument | Description |
1124
1093
  | --- | --- |
1125
- | `<path>` | File path: absolute, or relative to the container's start folder (for example src/App.vue). Required. |
1126
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1127
- | `--sandbox-id <string>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1128
- | `--container <string>` | Container to work in, by name, from sandboxes containers list. Default: the sandbox’s default container, else the one running container. With several running and no default the call fails and lists them. |
1129
- | `--start` | Start the container first when it is not running, without asking. |
1094
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1095
+ | `<container>` | Container, by name. Required. |
1096
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1130
1097
 
1131
- MCP tool: `sandboxes_files_read`.
1098
+ MCP tool: `vm_container_lock`.
1132
1099
 
1133
- ### `ghostdock sandboxes files upload`
1100
+ ### `ghostdock vm container logs`
1134
1101
 
1135
- Upload local files or directories to a sandbox's container, into its start folder (the login user's home, else WORKDIR, else /).
1102
+ Read a container’s output, as docker logs does. Oldest first, each line with its stream (stdout, stderr) and time. The last tail lines (default 200), or with after only the lines after that time: pass the last line’s time to follow. truncated says lines were left out. A stopped VM has none (it is not started for this).
1136
1103
 
1137
1104
  ```
1138
- ghostdock sandboxes files upload <sandbox-id> [path] [flags]
1105
+ ghostdock vm container logs <vm> <container> [flags]
1139
1106
  ```
1140
1107
 
1141
1108
  | Argument | Description |
1142
1109
  | --- | --- |
1143
- | `<sandbox-id>` | Sandbox name or id. Required. |
1144
- | `--org <value>` | Organization id or slug, from `ghostdock organizations list` (default: GHOSTDOCK_ORG, then `ghostdock organizations use`). |
1145
- | `--container <value>` | Container the files land in, by name, from `ghostdock sandboxes containers list`. Default: the sandbox's default container, else the one running container. |
1146
- | `--start` | Start the container first when it is not running, without asking. |
1147
- | `--zip <value>` | Local ZIP file to upload. |
1148
- | `<path>` | File or directory to upload (additional paths are allowed). |
1110
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1111
+ | `<container>` | Container, by name. Required. |
1112
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1113
+ | `--tail <integer>` | The last N lines (at most 5000). |
1114
+ | `--after <string>` | Only lines after this time: the time of the last line already read. |
1115
+ | `--follow` | Keep printing new lines until Ctrl-C. |
1116
+ | `--timestamps` | Put each line's time in front of it. |
1149
1117
 
1150
- MCP tool: `sandboxes_files_upload`.
1118
+ MCP tool: `vm_container_logs`.
1151
1119
 
1152
- ### `ghostdock sandboxes list`
1120
+ ### `ghostdock vm container restart`
1153
1121
 
1154
- List the sandboxes of an organization, with their lifecycle and deadlines. Each has a name (e.g. quiet-harbor), unique in the organization, that every sandbox tool accepts as sandboxId.
1122
+ Restart a container, as docker restart does (stopping as docker stop does). Starts the VM when needed.
1155
1123
 
1156
1124
  ```
1157
- ghostdock sandboxes list [flags]
1125
+ ghostdock vm container restart <vm> <container> [flags]
1158
1126
  ```
1159
1127
 
1160
1128
  | Argument | Description |
1161
1129
  | --- | --- |
1162
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1130
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1131
+ | `<container>` | Container, by name. Required. |
1132
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1163
1133
 
1164
- MCP tool: `sandboxes_list`.
1134
+ MCP tool: `vm_container_restart`.
1165
1135
 
1166
- ### `ghostdock sandboxes mcps`
1136
+ ### `ghostdock vm container start`
1137
+
1138
+ Start a stopped container, as docker start does. A running container stays as it is. Starts the VM when needed.
1139
+
1140
+ ```
1141
+ ghostdock vm container start <vm> <container> [flags]
1142
+ ```
1143
+
1144
+ | Argument | Description |
1145
+ | --- | --- |
1146
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1147
+ | `<container>` | Container, by name. Required. |
1148
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1167
1149
 
1168
- MCP endpoints a sandbox exposes.
1150
+ MCP tool: `vm_container_start`.
1169
1151
 
1170
- ### `ghostdock sandboxes mcps create`
1152
+ ### `ghostdock vm container stop`
1171
1153
 
1172
- Expose an MCP server running in a sandbox. Idempotent by name.
1154
+ Stop a container, as docker stop does. It gets its own stop signal, then a kill after its own stop timeout. It stays stopped while the VM sleeps and wakes, as Docker keeps a stopped container stopped, unless its restart policy is always. On a stopped VM it does nothing (note vm_stopped). A lock does not block it. note says when it was the default container or the last one running: then SSH, commands and files have nowhere to land until one runs.
1173
1155
 
1174
1156
  ```
1175
- ghostdock sandboxes mcps create <sandbox-id> --name <string> --port <integer> [flags]
1157
+ ghostdock vm container stop <vm> <container> [flags]
1176
1158
  ```
1177
1159
 
1178
1160
  | Argument | Description |
1179
1161
  | --- | --- |
1180
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1181
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1182
- | `--name <string>` | Endpoint name, unique in the sandbox. Letters, digits, _ and -, starting with a letter. Required. |
1183
- | `--port <integer>` | Port the MCP server listens on inside the sandbox. Required. |
1184
- | `--path <string>` | HTTP path of the MCP endpoint. Default /mcp. |
1185
- | `--auto-wake` | Start the sandbox when the endpoint is called while it is stopped. Default false. |
1162
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1163
+ | `<container>` | Container, by name. Required. |
1164
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1186
1165
 
1187
- MCP tool: `sandboxes_mcps_create`.
1166
+ MCP tool: `vm_container_stop`.
1188
1167
 
1189
- ### `ghostdock sandboxes mcps delete`
1168
+ ### `ghostdock vm container unlock`
1190
1169
 
1191
- Delete an MCP endpoint of a sandbox.
1170
+ Unlock a container so Docker can remove or recreate it. Also one its image locked with the ghostdock.lock label. Never starts the VM: a stopped one gets it at its next start, and an overdue auto-delete it held goes ahead.
1192
1171
 
1193
1172
  ```
1194
- ghostdock sandboxes mcps delete <mcp-id>
1173
+ ghostdock vm container unlock <vm> <container> [flags]
1195
1174
  ```
1196
1175
 
1197
1176
  | Argument | Description |
1198
1177
  | --- | --- |
1199
- | `<mcp-id>` | MCP endpoint id, from sandboxes mcps list or sandboxes mcps create. Required. |
1178
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1179
+ | `<container>` | Container, by name. Required. |
1180
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1200
1181
 
1201
- MCP tool: `sandboxes_mcps_delete`.
1182
+ MCP tool: `vm_container_unlock`.
1202
1183
 
1203
- ### `ghostdock sandboxes mcps list`
1184
+ ### `ghostdock vm create`
1204
1185
 
1205
- List the MCP endpoints a sandbox exposes (name, port, path, autoWake).
1186
+ Create a VM from a snapshot, OCI image, Dockerfile or Compose files. Inline content only: for a directory or ZIP (Dockerfile COPY/ADD, Compose build files) use `ghostdock vm build`. Snapshots and catalog images can require environment entries, URL ports and MCP names (requiredEnvironment / requiredUrls / requiredMcps); a missing environment entry fails with its names (missingEnvironment), and removing a required URL or MCP fails with them (missingUrls / missingMcps). Every source but a snapshot becomes a Compose project in the VM, run once with docker compose up -d; after that Docker is the truth. Returns once the project is up, with `boot`: how long the VM and the project's compose up took, each in ms, and the images it pulled. Idle-stop and auto-delete apply (defaults 20 minutes / 14 days). Read the vm skill (`ghostdock skill get vm`) for sources, manifests, lifecycle and providers.
1206
1187
 
1207
1188
  ```
1208
- ghostdock sandboxes mcps list <sandbox-id> [flags]
1189
+ ghostdock vm create --source <object> [flags]
1209
1190
  ```
1210
1191
 
1211
1192
  | Argument | Description |
1212
1193
  | --- | --- |
1213
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1214
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1194
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1195
+ | `--display-name <string>` | Display name for the VM. Optional. |
1196
+ | `--source <object>` | What the VM boots from. Required. "template" boots a template by its name ({ name, scope? } from template list, e.g. headless, desktop, nginx): the organization’s of that name, else the platform’s (scope picks one), its source and defaults, under every other field of this call (a URL on the same port or an MCP of the same name replaces the template's; vm up is the short form). "image" boots an org catalog row by id ({ id } from image list / image get — image add OCI bookmarks, image add-dockerfile, and image add-compose rows) or any OCI ref ({ ref }); "dockerfile" builds inline Dockerfile text only (ghostdock.* LABEL lines parsed for manifest; this tool has no build directory, so COPY/ADD of local files fails — use the CLI `ghostdock vm build --kind dockerfile` with a directory or ZIP); "compose" runs the given inline files with docker compose up -d (must include docker-compose.yml/yaml or compose.yml/yaml; ghostdock.* service labels parsed for manifest). Every source but a snapshot becomes a Compose project in /srv/ghostdock/<vm name>, run once; an image is one service named after it, a Dockerfile the service app. A Compose project that needs extra files is not accepted here — use `ghostdock vm build --kind compose`. "compose" also takes a published Compose project instead of files ({ reference: "oci://…", override? }): it runs through include:, the override merged into it. Image, dockerfile, and compose sources never appear in snapshot list. Published static sites use site publish (CDN), not a snapshot. (JSON object) Required. |
1197
+ | `--restart <string>` | Restart policy of the service an image or a Dockerfile becomes, Docker's names: unless-stopped (default), always, on-failure, or no (it does not come back after the VM sleeps). Not for Compose: its files set restart:. |
1198
+ | `--resources <object>` | Compute sizing. For image/dockerfile/compose: layered on platform defaults when omitted. For snapshot: optional override applied via resize after create. (JSON object) |
1199
+ | `--auto-stop-interval-minutes <number>` | Minutes of inactivity before the platform worker idle-stops the VM. -1 means always on. 0 is rejected. Omit for the platform default. Provider-native timers are optional backup. |
1200
+ | `--lifecycle <string>` | What may make the VM disappear on its own. ephemeral: every stop wipes the VM and its disk, and the next start runs its Compose project again (edits in the project folder kept, everything else gone; locks too). auto_delete (default): a stop keeps the disk, and the record goes autoDeleteAfterDays after the stop. keep: never removed automatically. Omit for the image label ghostdock.ephemeral, else auto_delete. ephemeral is chosen here only. |
1201
+ | `--auto-delete-after-days <integer>` | Days the VM stays stopped before the platform worker deletes the record (0–365; 0 deletes it when it stops). Omit for the platform default (14). Not with keep. A container a person locked holds it. |
1202
+ | `--provider <string>` | Provider id from provider list (not the provider kind). Omit to use the organization default (the org choice, else the platform default); if that provider lacks a capability this create needs, the first listed provider that accepts new VMs and has it is used. When no provider fits, the call fails with a not-configured error. |
1203
+ | `--environment <object>` | Environment to give this VM. organization: names of organization entries (from env list) to export under their own names. bindings: remap org entries onto slot names ({ name: slot, organization: orgEntryName }). local: VM-only variables/secrets to create with the VM (kind required for each). Both land as ordinary process environment variables ($NAME / process.env.NAME); a local entry overrides an organization entry of the same name. When booting from an organization snapshot, omit organization/bindings/local to keep manifest env defaults, but still supply every name in requiredEnvironment (via organization, bindings, or local). Otherwise a VM gets nothing unless listed here. (JSON object) |
1204
+ | `--image-base <string>` | How the disk is made for one of Ghostdock's platform images: auto (default) clones the host's image base, a disk with the image already on it, when there is one; off always starts from an empty disk that pulls the image. For tests and comparisons; other images always start empty. |
1205
+ | `--urls <array>` | Changes to the image’s or snapshot’s URLs, keyed by port. Omit for the image URLs as they are; otherwise you get the image URLs plus yours: an entry on the same port replaces that URL completely (omitted fields take their defaults), and { port, remove: true } drops it; removing a port the image does not declare does nothing. A required port cannot be removed. TCP URLs are always public. (JSON array) |
1206
+ | `--mcps <array>` | Changes to the image’s or snapshot’s MCP exposures, keyed by name. Omit for the image MCPs as they are; otherwise you get the image MCPs plus yours: an entry with the same name replaces that MCP completely, and { name, remove: true } drops it; removing a name the image does not declare does nothing. A required MCP (requiredMcps) cannot be removed. (JSON array) |
1215
1207
 
1216
- MCP tool: `sandboxes_mcps_list`.
1208
+ MCP tool: `vm_create`.
1217
1209
 
1218
- ### `ghostdock sandboxes mcps update`
1210
+ ### `ghostdock vm default-container`
1219
1211
 
1220
- Change an MCP endpoint’s name, port, path or autoWake setting.
1212
+ Show, set or clear the VM’s default container. SSH, the terminal, files, commands and MCP land there when no container is named. Without container or clear it only shows the setting.
1221
1213
 
1222
1214
  ```
1223
- ghostdock sandboxes mcps update <mcp-id> [flags]
1215
+ ghostdock vm default-container <vm> [flags]
1224
1216
  ```
1225
1217
 
1226
1218
  | Argument | Description |
1227
1219
  | --- | --- |
1228
- | `<mcp-id>` | MCP endpoint id, from sandboxes mcps list or sandboxes mcps create. Required. |
1229
- | `--name <string>` | New endpoint name. Omit to keep it. |
1230
- | `--port <integer>` | New port inside the sandbox. Omit to keep it. |
1231
- | `--path <string>` | New HTTP path. Omit to keep it. |
1232
- | `--auto-wake` | Start the sandbox when the endpoint is called while it is stopped. Omit to keep it. |
1220
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1221
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1222
+ | `--container <string>` | Container to make the default, by name. The running VM must have it. |
1223
+ | `--clear` | Clear the default. |
1224
+ | `--start` | Start the container first when it is not running, without asking. |
1233
1225
 
1234
- MCP tool: `sandboxes_mcps_update`.
1226
+ MCP tool: `vm_default_container`.
1235
1227
 
1236
- ### `ghostdock sandboxes resize`
1228
+ ### `ghostdock vm delete`
1237
1229
 
1238
- Change a sandbox’s CPU and/or memory. While running only increases are allowed; stop it first to decrease (this tool does not stop it). Disk: sandboxes resize-disk.
1230
+ Permanently delete a VM and its files. Refused while it has locked containers (vm_has_locked_containers, naming them) unless deleteLocked is true.
1239
1231
 
1240
1232
  ```
1241
- ghostdock sandboxes resize <sandbox-id> [flags]
1233
+ ghostdock vm delete <vm> [flags]
1242
1234
  ```
1243
1235
 
1244
1236
  | Argument | Description |
1245
1237
  | --- | --- |
1246
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1247
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1248
- | `--cpu <number>` | Number of CPUs. |
1249
- | `--memory-gib <number>` | Memory in GiB. |
1238
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1239
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1240
+ | `--delete-locked` | Delete it with its locked containers. Without it, a locked container refuses the delete. |
1241
+
1242
+ MCP tool: `vm_delete`.
1243
+
1244
+ ### `ghostdock vm env`
1250
1245
 
1251
- MCP tool: `sandboxes_resize`.
1246
+ Environment of one VM.
1252
1247
 
1253
- ### `ghostdock sandboxes resize-disk`
1248
+ ### `ghostdock vm env delete`
1254
1249
 
1255
- Grow a sandbox’s disk. The sandbox must be stopped first (this tool does not stop it). Disk only grows, never shrinks.
1250
+ Delete one of a VM’s own variables or secrets.
1256
1251
 
1257
1252
  ```
1258
- ghostdock sandboxes resize-disk <sandbox-id> --disk-gib <number> [flags]
1253
+ ghostdock vm env delete <name> --vm <string> [flags]
1259
1254
  ```
1260
1255
 
1261
1256
  | Argument | Description |
1262
1257
  | --- | --- |
1263
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1264
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1265
- | `--disk-gib <number>` | New total disk size in GiB; must be larger than the current size. Required. |
1258
+ | `<name>` | Environment variable name, e.g. DATABASE_URL. Letters, digits and underscores only. Case-sensitive; stored exactly as provided. Required. |
1259
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1260
+ | `--vm <string>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1261
+ | `--restart` | When true and the VM is running, stop then start after saving so processes pick up the change. Default: sync only. |
1266
1262
 
1267
- MCP tool: `sandboxes_resize_disk`.
1263
+ MCP tool: `vm_env_delete`.
1268
1264
 
1269
- ### `ghostdock sandboxes shells`
1265
+ ### `ghostdock vm env get`
1270
1266
 
1271
- Shell sessions that keep cwd and environment between commands.
1267
+ Get a VM’s environment: selections, bindings and local entries. Shows each organization entry with whether it is selected, exportAs, and overriddenByLocal; secret values are withheld. Nothing is inherited.
1272
1268
 
1273
- ### `ghostdock sandboxes shells close`
1269
+ ```
1270
+ ghostdock vm env get <vm> [flags]
1271
+ ```
1274
1272
 
1275
- Close a shell session.
1273
+ | Argument | Description |
1274
+ | --- | --- |
1275
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1276
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1277
+
1278
+ MCP tool: `vm_env_get`.
1279
+
1280
+ ### `ghostdock vm env select`
1281
+
1282
+ Replace the organization entries a VM exports. Full replace: environment is the whole list ([] clears it), and omitting bindings clears the remaps. Running processes keep their old values until restarted (pass restart). Read the environment skill (`ghostdock skill get environment`).
1276
1283
 
1277
1284
  ```
1278
- ghostdock sandboxes shells close <session-id> --sandbox-id <string> [flags]
1285
+ ghostdock vm env select <vm> --environment <array> [flags]
1279
1286
  ```
1280
1287
 
1281
1288
  | Argument | Description |
1282
1289
  | --- | --- |
1283
- | `<session-id>` | Session id from sandboxes shells create. Required. |
1284
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1285
- | `--sandbox-id <string>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1286
- | `--container <string>` | Container to work in, by name, from sandboxes containers list. Default: the sandbox’s default container, else the one running container. With several running and no default the call fails and lists them. |
1287
- | `--start` | Start the container first when it is not running, without asking. |
1290
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1291
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1292
+ | `--environment <array>` | Organization catalogue entry names to export under their own names. Pass [] to clear plain selections. (JSON array) Required. |
1293
+ | `--bindings <array>` | Slot-centric org bindings: export an organization entry under a (possibly different) VM env name. Omit to clear existing remaps (full replace). (JSON array) |
1294
+ | `--restart` | When true and the VM is running, stop then start after saving so processes pick up the change. Default: sync only; already-running processes keep the old values until restarted. |
1288
1295
 
1289
- MCP tool: `sandboxes_shells_close`.
1296
+ MCP tool: `vm_env_select`.
1290
1297
 
1291
- ### `ghostdock sandboxes shells create`
1298
+ ### `ghostdock vm env set`
1292
1299
 
1293
- Open a shell session that keeps cwd and environment between commands. Starts the sandbox when allowed; the session ends at idle-stop.
1300
+ Create or replace one of a VM’s own variables or secrets. It overrides an organization entry of the same name. kind is required when creating. Setting secrets via this tool is allowed; prefer the Ghostdock CLI so values stay out of the conversation, and never put them in commands.
1294
1301
 
1295
1302
  ```
1296
- ghostdock sandboxes shells create <sandbox-id> [flags]
1303
+ ghostdock vm env set <name> --vm <string> --value <string> [flags]
1297
1304
  ```
1298
1305
 
1299
1306
  | Argument | Description |
1300
1307
  | --- | --- |
1301
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1302
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1303
- | `--container <string>` | Container to work in, by name, from sandboxes containers list. Default: the sandbox’s default container, else the one running container. With several running and no default the call fails and lists them. |
1304
- | `--session-id <string>` | Id for the new session: a slug. Omit to generate one. |
1305
- | `--start` | Start the container first when it is not running, without asking. |
1308
+ | `<name>` | Environment variable name, e.g. DATABASE_URL. Letters, digits and underscores only. Case-sensitive; stored exactly as provided. Required. |
1309
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1310
+ | `--vm <string>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1311
+ | `--value <string>` | The value to store. A secret value can be replaced later but never read back. Required. |
1312
+ | `--kind <string>` | Required when creating. Use "secret" for credentials; secret values can be replaced but never read back. Omit when updating to keep the existing kind. |
1313
+ | `--comment <string>` | Optional note shown with the entry, e.g. what it is for. |
1314
+ | `--restart` | When true and the VM is running, stop then start after saving so processes pick up the change. Default: sync only. |
1306
1315
 
1307
- MCP tool: `sandboxes_shells_create`.
1316
+ MCP tool: `vm_env_set`.
1308
1317
 
1309
- ### `ghostdock sandboxes ssh`
1318
+ ### `ghostdock vm file`
1310
1319
 
1311
- SSH access to a sandbox.
1320
+ Files inside a VM.
1312
1321
 
1313
- ### `ghostdock sandboxes ssh get`
1322
+ ### `ghostdock vm file list`
1314
1323
 
1315
- Get temporary SSH access to a sandbox (command and token, 60 minutes). Starts the sandbox when needed. Idle-stop still applies, independent of the token.
1324
+ List the files in a VM directory. Default: the container's start folder (its dir).
1316
1325
 
1317
1326
  ```
1318
- ghostdock sandboxes ssh get <sandbox-id> [flags]
1327
+ ghostdock vm file list <vm> [flags]
1319
1328
  ```
1320
1329
 
1321
1330
  | Argument | Description |
1322
1331
  | --- | --- |
1323
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1324
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1325
- | `--container <string>` | Container to work in, by name, from sandboxes containers list. Default: the sandbox’s default container, else the one running container. With several running and no default the call fails and lists them. |
1332
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1333
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1334
+ | `--container <string>` | Container to work in, by name, from vm container list. Default: the VM’s default container, else the one running container. With several running and no default the call fails and lists them. |
1335
+ | `--path <string>` | Directory to list: absolute, or relative to the container's start folder (its dir: the login user's home, else WORKDIR, else /). Defaults to that folder. |
1326
1336
  | `--start` | Start the container first when it is not running, without asking. |
1327
1337
 
1328
- MCP tool: `sandboxes_ssh_get`.
1338
+ MCP tool: `vm_file_list`.
1329
1339
 
1330
- ### `ghostdock sandboxes ssh revoke`
1340
+ ### `ghostdock vm file read`
1331
1341
 
1332
- Revoke a sandbox’s active SSH access.
1342
+ Read a file from a VM: utf8 text, or base64 for small binaries.
1333
1343
 
1334
1344
  ```
1335
- ghostdock sandboxes ssh revoke <sandbox-id> [flags]
1345
+ ghostdock vm file read <path> --vm <string> [flags]
1336
1346
  ```
1337
1347
 
1338
1348
  | Argument | Description |
1339
1349
  | --- | --- |
1340
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1341
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1350
+ | `<path>` | File path: absolute, or relative to the container's start folder (for example src/App.vue). Required. |
1351
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1352
+ | `--vm <string>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1353
+ | `--container <string>` | Container to work in, by name, from vm container list. Default: the VM’s default container, else the one running container. With several running and no default the call fails and lists them. |
1354
+ | `--start` | Start the container first when it is not running, without asking. |
1342
1355
 
1343
- MCP tool: `sandboxes_ssh_revoke`.
1356
+ MCP tool: `vm_file_read`.
1344
1357
 
1345
- ### `ghostdock sandboxes status`
1358
+ ### `ghostdock vm file upload`
1346
1359
 
1347
- Get a sandbox’s status and lifecycle deadlines without waking it. Returns idleStopsAt, deletesAt and `boot` (the last start: sandbox and container times in ms) and does not reset idle activity.
1360
+ Upload local files or directories to a VM's container, into its start folder (the login user's home, else WORKDIR, else /).
1348
1361
 
1349
1362
  ```
1350
- ghostdock sandboxes status <sandbox-id> [flags]
1363
+ ghostdock vm file upload <vm> [path] [flags]
1351
1364
  ```
1352
1365
 
1353
1366
  | Argument | Description |
1354
1367
  | --- | --- |
1355
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1356
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1368
+ | `<vm>` | VM name or id. Required. |
1369
+ | `--org <value>` | Organization id or slug, from `ghostdock organization list` (default: GHOSTDOCK_ORG, then `ghostdock organization use`). |
1370
+ | `--container <value>` | Container the files land in, by name, from `ghostdock vm container list`. Default: the VM's default container, else the one running container. |
1371
+ | `--start` | Start the container first when it is not running, without asking. |
1372
+ | `--zip <value>` | Local ZIP file to upload. |
1373
+ | `<path>` | File or directory to upload (additional paths are allowed). |
1357
1374
 
1358
- MCP tool: `sandboxes_status`.
1375
+ MCP tool: `vm_file_upload`.
1359
1376
 
1360
- ### `ghostdock sandboxes stop`
1377
+ ### `ghostdock vm list`
1361
1378
 
1362
- Stop a running sandbox without deleting its files.
1379
+ List the VMs of an organization, with their lifecycle and deadlines. Each has a name (e.g. quiet-harbor), unique in the organization, that every VM tool accepts as `vm`.
1363
1380
 
1364
1381
  ```
1365
- ghostdock sandboxes stop <sandbox-id> [flags]
1382
+ ghostdock vm list [flags]
1366
1383
  ```
1367
1384
 
1368
1385
  | Argument | Description |
1369
1386
  | --- | --- |
1370
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1371
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1387
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1372
1388
 
1373
- MCP tool: `sandboxes_stop`.
1389
+ MCP tool: `vm_list`.
1374
1390
 
1375
- ### `ghostdock sandboxes storage`
1391
+ ### `ghostdock vm mcp`
1376
1392
 
1377
- ### `ghostdock sandboxes storage delete`
1393
+ MCP endpoints a VM exposes.
1378
1394
 
1379
- Delete a named volume or a top-level sandbox folder, with everything in it. Refused while a container mounts it (in any state: a stopped one counts, so stopping does not help), mounts a folder above it (a bind of /), or a volume keeps its data in the folder: remove those first.
1395
+ ### `ghostdock vm mcp create`
1396
+
1397
+ Expose an MCP server running in a VM. Idempotent by name.
1380
1398
 
1381
1399
  ```
1382
- ghostdock sandboxes storage delete <sandbox-id> --kind <string> --name <string> [flags]
1400
+ ghostdock vm mcp create <vm> --name <string> --port <integer> [flags]
1383
1401
  ```
1384
1402
 
1385
1403
  | Argument | Description |
1386
1404
  | --- | --- |
1387
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1388
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1389
- | `--kind <string>` | volume or folder. Required. |
1390
- | `--name <string>` | The volume’s name, or the folder’s path in the sandbox (/srv, not /srv/app). Required. |
1405
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1406
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1407
+ | `--name <string>` | Endpoint name, unique in the VM. Letters, digits, _ and -, starting with a letter. Required. |
1408
+ | `--port <integer>` | Port the MCP server listens on inside the VM. Required. |
1409
+ | `--path <string>` | HTTP path of the MCP endpoint. Default /mcp. |
1410
+ | `--auto-wake` | Start the VM when the endpoint is called while it is stopped. Default false. |
1391
1411
 
1392
- MCP tool: `sandboxes_storage_delete`.
1412
+ MCP tool: `vm_mcp_create`.
1393
1413
 
1394
- ### `ghostdock sandboxes storage list`
1414
+ ### `ghostdock vm mcp delete`
1395
1415
 
1396
- List a sandbox’s volumes and sandbox folders. The sandbox folders are where bind mounts land. Each with its size and sizeState (measured; measuring: ask again in a few seconds; tooBig: too big to measure cheaply; outside: a volume bound outside the sandbox folders, not measured nor browsable) and the containers using it, plus every container’s mounts. truncated says entries were left out. A stopped sandbox lists none (it is not started for this).
1416
+ Delete an MCP endpoint of a VM.
1397
1417
 
1398
1418
  ```
1399
- ghostdock sandboxes storage list <sandbox-id> [flags]
1419
+ ghostdock vm mcp delete <mcp-id>
1400
1420
  ```
1401
1421
 
1402
1422
  | Argument | Description |
1403
1423
  | --- | --- |
1404
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1405
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1424
+ | `<mcp-id>` | MCP endpoint id, from vm mcp list or vm mcp create. Required. |
1425
+
1426
+ MCP tool: `vm_mcp_delete`.
1406
1427
 
1407
- MCP tool: `sandboxes_storage_list`.
1428
+ ### `ghostdock vm mcp list`
1429
+
1430
+ List the MCP endpoints a VM exposes (name, port, path, autoWake).
1431
+
1432
+ ```
1433
+ ghostdock vm mcp list <vm> [flags]
1434
+ ```
1408
1435
 
1409
- ### `ghostdock sandboxes tools`
1436
+ | Argument | Description |
1437
+ | --- | --- |
1438
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1439
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1410
1440
 
1411
- Tools of the MCP servers inside a sandbox.
1441
+ MCP tool: `vm_mcp_list`.
1412
1442
 
1413
- ### `ghostdock sandboxes tools call`
1443
+ ### `ghostdock vm mcp update`
1414
1444
 
1415
- Call a tool on an MCP server inside a sandbox. Wakes a stopped sandbox when the endpoint has autoWake.
1445
+ Change an MCP endpoint’s name, port, path or autoWake setting.
1416
1446
 
1417
1447
  ```
1418
- ghostdock sandboxes tools call <name> --sandbox-id <string> --arguments <object> [flags]
1448
+ ghostdock vm mcp update <mcp-id> [flags]
1419
1449
  ```
1420
1450
 
1421
1451
  | Argument | Description |
1422
1452
  | --- | --- |
1423
- | `<name>` | Tool name, from sandboxes tools list. Required. |
1424
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1425
- | `--sandbox-id <string>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1426
- | `--arguments <object>` | Tool arguments as a JSON object. (JSON object) Required. |
1427
- | `--mcp-name <string>` | MCP endpoint to call. Needed when several endpoints expose the same tool name. |
1453
+ | `<mcp-id>` | MCP endpoint id, from vm mcp list or vm mcp create. Required. |
1454
+ | `--name <string>` | New endpoint name. Omit to keep it. |
1455
+ | `--port <integer>` | New port inside the VM. Omit to keep it. |
1456
+ | `--path <string>` | New HTTP path. Omit to keep it. |
1457
+ | `--auto-wake` | Start the VM when the endpoint is called while it is stopped. Omit to keep it. |
1428
1458
 
1429
- MCP tool: `sandboxes_tools_call`.
1459
+ MCP tool: `vm_mcp_update`.
1430
1460
 
1431
- ### `ghostdock sandboxes tools list`
1461
+ ### `ghostdock vm resize`
1432
1462
 
1433
- List the tools of the MCP servers a sandbox exposes. A server that cannot be reached is reported in errors; the others are still listed.
1463
+ Change a VM’s CPU and/or memory. While running only increases are allowed; stop it first to decrease (this tool does not stop it). Disk: vm resize-disk.
1434
1464
 
1435
1465
  ```
1436
- ghostdock sandboxes tools list <sandbox-id> [flags]
1466
+ ghostdock vm resize <vm> [flags]
1437
1467
  ```
1438
1468
 
1439
1469
  | Argument | Description |
1440
1470
  | --- | --- |
1441
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1442
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1443
- | `--mcp-name <string>` | Only list the tools of this MCP endpoint. |
1471
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1472
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1473
+ | `--cpu <number>` | Number of CPUs. |
1474
+ | `--memory-gib <number>` | Memory in GiB. |
1444
1475
 
1445
- MCP tool: `sandboxes_tools_list`.
1476
+ MCP tool: `vm_resize`.
1446
1477
 
1447
- ### `ghostdock sandboxes update`
1478
+ ### `ghostdock vm resize-disk`
1448
1479
 
1449
- Change a sandbox’s display name, idle-stop interval or lifecycle. Omit a field to keep it; null resets it to the platform default. Ephemeral is chosen at create only.
1480
+ Grow a VM’s disk. The VM must be stopped first (this tool does not stop it). Disk only grows, never shrinks.
1450
1481
 
1451
1482
  ```
1452
- ghostdock sandboxes update <sandbox-id> [flags]
1483
+ ghostdock vm resize-disk <vm> --disk-gib <number> [flags]
1453
1484
  ```
1454
1485
 
1455
1486
  | Argument | Description |
1456
1487
  | --- | --- |
1457
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1458
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1459
- | `--display-name <string>` | New display name. Null clears it; omit to keep it. |
1460
- | `--auto-stop-interval-minutes <number>` | Minutes of inactivity before the platform worker idle-stops the sandbox. -1 always on. 0 is rejected. Null resets to the platform default. Provider-native timers are optional backup. |
1461
- | `--lifecycle <string>` | auto_delete: the record goes autoDeleteAfterDays after the sandbox stops. keep: never removed automatically. |
1462
- | `--auto-delete-after-days <integer>` | Days stopped before the record is deleted (0–365; 0 deletes it when it stops). Null writes the platform default. Not with keep. |
1488
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1489
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1490
+ | `--disk-gib <number>` | New total disk size in GiB; must be larger than the current size. Required. |
1463
1491
 
1464
- MCP tool: `sandboxes_update`.
1492
+ MCP tool: `vm_resize_disk`.
1465
1493
 
1466
- ### `ghostdock sandboxes urls`
1494
+ ### `ghostdock vm shell`
1467
1495
 
1468
- URLs that expose sandbox ports.
1496
+ Shell sessions that keep cwd and environment between commands.
1469
1497
 
1470
- ### `ghostdock sandboxes urls create`
1498
+ ### `ghostdock vm shell close`
1471
1499
 
1472
- Expose a sandbox port as a URL. Idempotent by port: when the sandbox already has a URL on that port, it is returned unchanged (autoWake, public and title are not applied); use sandboxes urls update to change it. HTTP defaults to private with no wake-on-visit; TCP URLs use TLS (not HTTP) and are always public — for a private port use sandboxes ssh get and an SSH forward. Read the sandboxes skill (`ghostdock skills get sandboxes`) for TCP clients.
1500
+ Close a shell session.
1473
1501
 
1474
1502
  ```
1475
- ghostdock sandboxes urls create <sandbox-id> --port <integer> [flags]
1503
+ ghostdock vm shell close <session-id> --vm <string> [flags]
1476
1504
  ```
1477
1505
 
1478
1506
  | Argument | Description |
1479
1507
  | --- | --- |
1480
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1481
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1482
- | `--port <integer>` | Port inside the sandbox to expose. Required. |
1483
- | `--protocol <string>` | "http" (default) or "tcp". TCP URLs use TLS and are always public. |
1484
- | `--auto-wake` | Start the sandbox when the URL is visited while it is stopped. Default false. |
1485
- | `--public` | Reachable without signing in. Default false; TCP URLs are always public. |
1486
- | `--title <string>` | Name shown for the URL, up to 40 characters. A titled HTTP URL gets its own button on the sandbox card; TCP titles are shown in URL lists. Untitled HTTP URLs are listed under "Open URL". |
1508
+ | `<session-id>` | Session id from vm shell create. Required. |
1509
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1510
+ | `--vm <string>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1511
+ | `--container <string>` | Container to work in, by name, from vm container list. Default: the VM’s default container, else the one running container. With several running and no default the call fails and lists them. |
1512
+ | `--start` | Start the container first when it is not running, without asking. |
1487
1513
 
1488
- MCP tool: `sandboxes_urls_create`.
1514
+ MCP tool: `vm_shell_close`.
1489
1515
 
1490
- ### `ghostdock sandboxes urls delete`
1516
+ ### `ghostdock vm shell create`
1491
1517
 
1492
- Delete a sandbox URL.
1518
+ Open a shell session that keeps cwd and environment between commands. Starts the VM when allowed; the session ends at idle-stop.
1493
1519
 
1494
1520
  ```
1495
- ghostdock sandboxes urls delete <url-id>
1521
+ ghostdock vm shell create <vm> [flags]
1496
1522
  ```
1497
1523
 
1498
1524
  | Argument | Description |
1499
1525
  | --- | --- |
1500
- | `<url-id>` | Sandbox URL id, from sandboxes urls list or sandboxes urls create. Required. |
1526
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1527
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1528
+ | `--container <string>` | Container to work in, by name, from vm container list. Default: the VM’s default container, else the one running container. With several running and no default the call fails and lists them. |
1529
+ | `--session-id <string>` | Id for the new session: a slug. Omit to generate one. |
1530
+ | `--start` | Start the container first when it is not running, without asking. |
1501
1531
 
1502
- MCP tool: `sandboxes_urls_delete`.
1532
+ MCP tool: `vm_shell_create`.
1503
1533
 
1504
- ### `ghostdock sandboxes urls list`
1534
+ ### `ghostdock vm ssh`
1505
1535
 
1506
- List the URLs that expose a sandbox’s ports, with protocol, access and title. A titled URL (for example `Desktop`, the desktop image’s desktop in a browser) gets its own button in the app.
1536
+ SSH access to a VM.
1537
+
1538
+ ### `ghostdock vm ssh get`
1539
+
1540
+ Get temporary SSH access to a VM (command and token, 60 minutes). Starts the VM when needed. Idle-stop still applies, independent of the token.
1507
1541
 
1508
1542
  ```
1509
- ghostdock sandboxes urls list <sandbox-id> [flags]
1543
+ ghostdock vm ssh get <vm> [flags]
1510
1544
  ```
1511
1545
 
1512
1546
  | Argument | Description |
1513
1547
  | --- | --- |
1514
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1515
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1548
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1549
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1550
+ | `--container <string>` | Container to work in, by name, from vm container list. Default: the VM’s default container, else the one running container. With several running and no default the call fails and lists them. |
1551
+ | `--start` | Start the container first when it is not running, without asking. |
1516
1552
 
1517
- MCP tool: `sandboxes_urls_list`.
1553
+ MCP tool: `vm_ssh_get`.
1518
1554
 
1519
- ### `ghostdock sandboxes urls update`
1555
+ ### `ghostdock vm ssh revoke`
1520
1556
 
1521
- Change a sandbox URL’s port, protocol, autoWake, public setting or title. TCP cannot be private.
1557
+ Revoke a VM’s active SSH access.
1522
1558
 
1523
1559
  ```
1524
- ghostdock sandboxes urls update <url-id> [flags]
1560
+ ghostdock vm ssh revoke <vm> [flags]
1525
1561
  ```
1526
1562
 
1527
1563
  | Argument | Description |
1528
1564
  | --- | --- |
1529
- | `<url-id>` | Sandbox URL id, from sandboxes urls list or sandboxes urls create. Required. |
1530
- | `--port <integer>` | New port inside the sandbox. Omit to keep it. |
1531
- | `--protocol <string>` | "http" or "tcp". Omit to keep the current protocol. |
1532
- | `--auto-wake` | Start the sandbox when the URL is visited while it is stopped. Omit to keep it. |
1533
- | `--public` | Reachable without signing in. Omit to keep it; TCP cannot be made private. |
1534
- | `--title <string>` | Name shown for the URL, up to 40 characters. A titled HTTP URL gets its own button on the sandbox card; TCP titles are shown in URL lists. Untitled HTTP URLs are listed under "Open URL". Omit to keep it; null removes it. |
1565
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1566
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1535
1567
 
1536
- MCP tool: `sandboxes_urls_update`.
1568
+ MCP tool: `vm_ssh_revoke`.
1537
1569
 
1538
- ### `ghostdock sandboxes wake`
1570
+ ### `ghostdock vm status`
1539
1571
 
1540
- Start a stopped sandbox, or reset the idle-stop countdown of a running one. Returns status, idleStopsAt / deletesAt, and `boot` (sandbox and container start times in ms; null when it was already running).
1572
+ Get a VM’s status and lifecycle deadlines without waking it. Returns idleStopsAt, deletesAt and `boot` (the last start: VM and container times in ms) and does not reset idle activity.
1541
1573
 
1542
1574
  ```
1543
- ghostdock sandboxes wake <sandbox-id> [flags]
1575
+ ghostdock vm status <vm> [flags]
1544
1576
  ```
1545
1577
 
1546
1578
  | Argument | Description |
1547
1579
  | --- | --- |
1548
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1549
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1580
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1581
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1550
1582
 
1551
- MCP tool: `sandboxes_wake`.
1583
+ MCP tool: `vm_status`.
1552
1584
 
1553
- ## `ghostdock sites`
1585
+ ### `ghostdock vm stop`
1554
1586
 
1555
- Static sites on the CDN.
1587
+ Stop a running VM without deleting its files.
1556
1588
 
1557
- ### `ghostdock sites publish`
1589
+ ```
1590
+ ghostdock vm stop <vm> [flags]
1591
+ ```
1558
1592
 
1559
- Publish a local directory or ZIP to the CDN.
1593
+ | Argument | Description |
1594
+ | --- | --- |
1595
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1596
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1597
+
1598
+ MCP tool: `vm_stop`.
1599
+
1600
+ ### `ghostdock vm storage`
1601
+
1602
+ ### `ghostdock vm storage delete`
1603
+
1604
+ Delete a named volume or a top-level VM folder, with everything in it. Refused while a container mounts it (in any state: a stopped one counts, so stopping does not help), mounts a folder above it (a bind of /), or a volume keeps its data in the folder: remove those first.
1560
1605
 
1561
1606
  ```
1562
- ghostdock sites publish [path] [flags]
1607
+ ghostdock vm storage delete <vm> --kind <string> --name <string> [flags]
1563
1608
  ```
1564
1609
 
1565
1610
  | Argument | Description |
1566
1611
  | --- | --- |
1567
- | `--org <value>` | Organization id or slug, from `ghostdock organizations list` (default: GHOSTDOCK_ORG, then `ghostdock organizations use`). |
1568
- | `--display-name <value>` | Optional site display name. |
1569
- | `--zip <value>` | Local ZIP file to publish. |
1570
- | `<path>` | File or directory to publish (additional paths are allowed). |
1612
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1613
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1614
+ | `--kind <string>` | volume or folder. Required. |
1615
+ | `--name <string>` | The volume’s name, or the folder’s path in the VM (/srv, not /srv/app). Required. |
1571
1616
 
1572
- MCP tool: `sites_publish`.
1617
+ MCP tool: `vm_storage_delete`.
1573
1618
 
1574
- ### `ghostdock sites unpublish`
1619
+ ### `ghostdock vm storage list`
1575
1620
 
1576
- Take a published static site offline.
1621
+ List a VM’s volumes and VM folders. The VM folders are where bind mounts land. Each with its size and sizeState (measured; measuring: ask again in a few seconds; tooBig: too big to measure cheaply; outside: a volume bound outside the VM folders, not measured nor browsable) and the containers using it, plus every container’s mounts. truncated says entries were left out. A stopped VM lists none (it is not started for this).
1577
1622
 
1578
1623
  ```
1579
- ghostdock sites unpublish <site-id> [flags]
1624
+ ghostdock vm storage list <vm> [flags]
1580
1625
  ```
1581
1626
 
1582
1627
  | Argument | Description |
1583
1628
  | --- | --- |
1584
- | `<site-id>` | Site id: the slug in the public URL, as returned by sites publish or apps list. Required. |
1585
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1629
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1630
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1586
1631
 
1587
- MCP tool: `sites_unpublish`.
1632
+ MCP tool: `vm_storage_list`.
1588
1633
 
1589
- ## `ghostdock skills`
1634
+ ### `ghostdock vm tool`
1590
1635
 
1591
- List and read Agent Skills (same catalog as MCP skill://index.json).
1636
+ Tools of the MCP servers inside a VM.
1592
1637
 
1593
- ### `ghostdock skills get`
1638
+ ### `ghostdock vm tool call`
1594
1639
 
1595
- Print one SKILL.md (URI from the discovery index, or a skill name).
1640
+ Call a tool on an MCP server inside a VM. Wakes a stopped VM when the endpoint has autoWake.
1596
1641
 
1597
1642
  ```
1598
- ghostdock skills get <uri>
1643
+ ghostdock vm tool call <name> --vm <string> --arguments <object> [flags]
1599
1644
  ```
1600
1645
 
1601
1646
  | Argument | Description |
1602
1647
  | --- | --- |
1603
- | `<uri>` | skill:// URI, org/name, or skill name. Required. |
1648
+ | `<name>` | Tool name, from vm tool list. Required. |
1649
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1650
+ | `--vm <string>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1651
+ | `--arguments <object>` | Tool arguments as a JSON object. (JSON object) Required. |
1652
+ | `--mcp-name <string>` | MCP endpoint to call. Needed when several endpoints expose the same tool name. |
1604
1653
 
1605
- MCP tool: `skills_get`.
1654
+ MCP tool: `vm_tool_call`.
1606
1655
 
1607
- ### `ghostdock skills list`
1656
+ ### `ghostdock vm tool list`
1608
1657
 
1609
- List the Agent Skills discovery index.
1658
+ List the tools of the MCP servers a VM exposes. A server that cannot be reached is reported in errors; the others are still listed.
1610
1659
 
1611
1660
  ```
1612
- ghostdock skills list
1661
+ ghostdock vm tool list <vm> [flags]
1613
1662
  ```
1614
1663
 
1615
- MCP tool: `skills_list`.
1664
+ | Argument | Description |
1665
+ | --- | --- |
1666
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1667
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1668
+ | `--mcp-name <string>` | Only list the tools of this MCP endpoint. |
1616
1669
 
1617
- ## `ghostdock snapshots`
1670
+ MCP tool: `vm_tool_list`.
1618
1671
 
1619
- Sandbox snapshots.
1672
+ ### `ghostdock vm up`
1620
1673
 
1621
- ### `ghostdock snapshots create`
1674
+ Create a VM from a template by its name: `ghostdock vm up nginx`. The organization’s template of that name, else the platform’s (template list); platform true takes the platform’s. The same as vm create with source { type: "template", name }: the template's source and defaults, under the fields given here. Returns like vm create, with the template it used.
1622
1675
 
1623
- Save a sandbox’s filesystem as a reusable organization snapshot. The sandbox must be stopped, unless stopAndResume. Captures its URLs and environment into a manifest (secrets as required, without values). Waits up to ~120 seconds; if still pending it returns timedOut, then poll snapshots get. Setting secret values here is allowed; prefer the Ghostdock CLI so they stay out of the conversation.
1676
+ ```
1677
+ ghostdock vm up <template> [flags]
1678
+ ```
1679
+
1680
+ | Argument | Description |
1681
+ | --- | --- |
1682
+ | `<template>` | Template name from template list, e.g. headless. Required. |
1683
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1684
+ | `--platform` | Take the platform’s template of this name even when the organization has its own (shadows). |
1685
+ | `--display-name <string>` | Display name for the VM. Optional. |
1686
+ | `--resources <object>` | Compute sizing. For image/dockerfile/compose: layered on platform defaults when omitted. For snapshot: optional override applied via resize after create. (JSON object) |
1687
+ | `--auto-stop-interval-minutes <number>` | Minutes of inactivity before the platform worker idle-stops the VM. -1 means always on. 0 is rejected. Omit for the platform default. Provider-native timers are optional backup. |
1688
+ | `--lifecycle <string>` | What may make the VM disappear on its own. ephemeral: every stop wipes the VM and its disk, and the next start runs its Compose project again (edits in the project folder kept, everything else gone; locks too). auto_delete (default): a stop keeps the disk, and the record goes autoDeleteAfterDays after the stop. keep: never removed automatically. Omit for the image label ghostdock.ephemeral, else auto_delete. ephemeral is chosen here only. |
1689
+ | `--auto-delete-after-days <integer>` | Days the VM stays stopped before the platform worker deletes the record (0–365; 0 deletes it when it stops). Omit for the platform default (14). Not with keep. A container a person locked holds it. |
1690
+ | `--provider <string>` | Provider id from provider list (not the provider kind). Omit to use the organization default (the org choice, else the platform default); if that provider lacks a capability this create needs, the first listed provider that accepts new VMs and has it is used. When no provider fits, the call fails with a not-configured error. |
1691
+ | `--environment <object>` | Environment to give this VM. organization: names of organization entries (from env list) to export under their own names. bindings: remap org entries onto slot names ({ name: slot, organization: orgEntryName }). local: VM-only variables/secrets to create with the VM (kind required for each). Both land as ordinary process environment variables ($NAME / process.env.NAME); a local entry overrides an organization entry of the same name. When booting from an organization snapshot, omit organization/bindings/local to keep manifest env defaults, but still supply every name in requiredEnvironment (via organization, bindings, or local). Otherwise a VM gets nothing unless listed here. (JSON object) |
1692
+ | `--urls <array>` | Changes to the template’s and its image’s URLs, keyed by port, as in vm create: the same port replaces, { port, remove: true } drops. (JSON array) |
1693
+
1694
+ MCP tool: `vm_up`.
1695
+
1696
+ ### `ghostdock vm update`
1697
+
1698
+ Change a VM’s display name, idle-stop interval or lifecycle. Omit a field to keep it; null resets it to the platform default. Ephemeral is chosen at create only.
1624
1699
 
1625
1700
  ```
1626
- ghostdock snapshots create <sandbox-id> --name <string> [flags]
1701
+ ghostdock vm update <vm> [flags]
1627
1702
  ```
1628
1703
 
1629
1704
  | Argument | Description |
1630
1705
  | --- | --- |
1631
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1632
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1633
- | `--name <string>` | Snapshot name, unique in the organization. Required. |
1634
- | `--stop-and-resume` | When the sandbox is running: stop it, snapshot, then start it again. Without this it must already be stopped. |
1635
- | `--include-secret-values <array>` | Names of sandbox-local secrets whose values to embed in the snapshot. Organization secrets cannot be copied. (JSON array) |
1636
- | `--manifest <object>` | Replaces the captured URLs and environment entirely (no merge). An omitted ephemeral is copied from the sandbox. Secret values are stored encrypted. (JSON object) |
1706
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1707
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1708
+ | `--display-name <string>` | New display name. Null clears it; omit to keep it. |
1709
+ | `--auto-stop-interval-minutes <number>` | Minutes of inactivity before the platform worker idle-stops the VM. -1 always on. 0 is rejected. Null resets to the platform default. Provider-native timers are optional backup. |
1710
+ | `--lifecycle <string>` | auto_delete: the record goes autoDeleteAfterDays after the VM stops. keep: never removed automatically. |
1711
+ | `--auto-delete-after-days <integer>` | Days stopped before the record is deleted (0–365; 0 deletes it when it stops). Null writes the platform default. Not with keep. |
1637
1712
 
1638
- MCP tool: `snapshots_create`.
1713
+ MCP tool: `vm_update`.
1639
1714
 
1640
- ### `ghostdock snapshots delete`
1715
+ ### `ghostdock vm url`
1641
1716
 
1642
- Permanently delete an organization snapshot (provider artifact and record).
1717
+ URLs that expose VM ports.
1718
+
1719
+ ### `ghostdock vm url create`
1720
+
1721
+ Expose a VM port as a URL. Idempotent by port: when the VM already has a URL on that port, it is returned unchanged (autoWake, public and title are not applied); use vm url update to change it. HTTP defaults to private with no wake-on-visit; TCP URLs use TLS (not HTTP) and are always public — for a private port use vm ssh get and an SSH forward. Read the vm skill (`ghostdock skill get vm`) for TCP clients.
1643
1722
 
1644
1723
  ```
1645
- ghostdock snapshots delete <snapshot-id> [flags]
1724
+ ghostdock vm url create <vm> --port <integer> [flags]
1646
1725
  ```
1647
1726
 
1648
1727
  | Argument | Description |
1649
1728
  | --- | --- |
1650
- | `<snapshot-id>` | Snapshot id from snapshots list (the provider snapshot name) or its database id. Required. |
1651
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1729
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1730
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1731
+ | `--port <integer>` | Port inside the VM to expose. Required. |
1732
+ | `--protocol <string>` | "http" (default) or "tcp". TCP URLs use TLS and are always public. |
1733
+ | `--auto-wake` | Start the VM when the URL is visited while it is stopped. Default false. |
1734
+ | `--public` | Reachable without signing in. Default false; TCP URLs are always public. |
1735
+ | `--title <string>` | Name shown for the URL, up to 40 characters. A titled HTTP URL gets its own button on the VM card; TCP titles are shown in URL lists. Untitled HTTP URLs are listed under "Open URL". |
1652
1736
 
1653
- MCP tool: `snapshots_delete`.
1737
+ MCP tool: `vm_url_create`.
1654
1738
 
1655
- ### `ghostdock snapshots get`
1739
+ ### `ghostdock vm url delete`
1656
1740
 
1657
- Get one snapshot with its manifest and required environment, URLs and MCPs. Returns a redacted manifest with requiredEnvironment / requiredUrls / requiredMcps. Poll it after snapshots create while status is pending.
1741
+ Delete a VM URL.
1658
1742
 
1659
1743
  ```
1660
- ghostdock snapshots get <snapshot-id> [flags]
1744
+ ghostdock vm url delete <url-id>
1661
1745
  ```
1662
1746
 
1663
1747
  | Argument | Description |
1664
1748
  | --- | --- |
1665
- | `<snapshot-id>` | Snapshot id from snapshots list (the provider snapshot name) or its database id. Required. |
1666
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1749
+ | `<url-id>` | VM URL id, from vm url list or vm url create. Required. |
1667
1750
 
1668
- MCP tool: `snapshots_get`.
1751
+ MCP tool: `vm_url_delete`.
1669
1752
 
1670
- ### `ghostdock snapshots list`
1753
+ ### `ghostdock vm url list`
1671
1754
 
1672
- List the snapshots an organization can boot sandboxes from. Each item has status (pending, active, error), the provider that holds it (sandboxProviderId; boot it there), sandboxCount, and a redacted manifest with requiredEnvironment / requiredUrls / requiredMcps.
1755
+ List the URLs that expose a VM’s ports, with protocol, access and title. A titled URL (for example `Desktop`, the desktop image’s desktop in a browser) gets its own button in the app.
1673
1756
 
1674
1757
  ```
1675
- ghostdock snapshots list [flags]
1758
+ ghostdock vm url list <vm> [flags]
1676
1759
  ```
1677
1760
 
1678
1761
  | Argument | Description |
1679
1762
  | --- | --- |
1680
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1763
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1764
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1681
1765
 
1682
- MCP tool: `snapshots_list`.
1766
+ MCP tool: `vm_url_list`.
1683
1767
 
1684
- ### `ghostdock snapshots update-manifest`
1768
+ ### `ghostdock vm url update`
1685
1769
 
1686
- Replace a snapshot’s manifest (URLs, environment, MCPs). Does not change the snapshot itself. Secret values in the body are stored encrypted; the response is redacted. Setting secret values here is allowed; prefer the Ghostdock CLI so they stay out of the conversation.
1770
+ Change a VM URL’s port, protocol, autoWake, public setting or title. TCP cannot be private.
1687
1771
 
1688
1772
  ```
1689
- ghostdock snapshots update-manifest <snapshot-id> --manifest <object> [flags]
1773
+ ghostdock vm url update <url-id> [flags]
1690
1774
  ```
1691
1775
 
1692
1776
  | Argument | Description |
1693
1777
  | --- | --- |
1694
- | `<snapshot-id>` | Snapshot id from snapshots list (the provider snapshot name) or its database id. Required. |
1695
- | `--org <string>` | Organization id or slug, from organizations list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organizations use`. |
1696
- | `--manifest <object>` | The new manifest; replaces the stored one. An omitted ephemeral keeps the stored value. Secret values are stored encrypted. (JSON object) Required. |
1778
+ | `<url-id>` | VM URL id, from vm url list or vm url create. Required. |
1779
+ | `--port <integer>` | New port inside the VM. Omit to keep it. |
1780
+ | `--protocol <string>` | "http" or "tcp". Omit to keep the current protocol. |
1781
+ | `--auto-wake` | Start the VM when the URL is visited while it is stopped. Omit to keep it. |
1782
+ | `--public` | Reachable without signing in. Omit to keep it; TCP cannot be made private. |
1783
+ | `--title <string>` | Name shown for the URL, up to 40 characters. A titled HTTP URL gets its own button on the VM card; TCP titles are shown in URL lists. Untitled HTTP URLs are listed under "Open URL". Omit to keep it; null removes it. |
1697
1784
 
1698
- MCP tool: `snapshots_update_manifest`.
1785
+ MCP tool: `vm_url_update`.
1699
1786
 
1700
- ## `ghostdock tools`
1787
+ ### `ghostdock vm wake`
1701
1788
 
1702
- List available agent tools.
1789
+ Start a stopped VM, or reset the idle-stop countdown of a running one. Returns status, idleStopsAt / deletesAt, and `boot` (VM and container start times in ms; null when it was already running).
1703
1790
 
1704
1791
  ```
1705
- ghostdock tools
1792
+ ghostdock vm wake <vm> [flags]
1706
1793
  ```
1707
1794
 
1795
+ | Argument | Description |
1796
+ | --- | --- |
1797
+ | `<vm>` | VM name (e.g. quiet-harbor) or id, from vm list or vm create. Names are unique within the organization. Required. |
1798
+ | `--org <string>` | Organization id or slug, from organization list. Ids survive renames; slugs change when the organization is renamed. Defaults to GHOSTDOCK_ORG, then `organization use`. |
1799
+
1800
+ MCP tool: `vm_wake`.
1801
+
1708
1802
  ## `ghostdock whoami`
1709
1803
 
1710
1804
  Show the account this CLI is currently authenticated as.