ghostdock 0.0.18 → 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
- | `--reference <string>` | A published Compose project instead of files, e.g. oci://docker.io/ghostdockhq/vm-compose:ubuntu-26.04. |
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-interval-minutes <value>` | Same as `sandboxes create`. Omit for the 14-day default. Pass 0 to delete the record when it stops, or -1 to keep it. |
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
- | `--auto-delete-interval-minutes <number>` | Minutes the sandbox stays stopped before the platform worker deletes the record. 0 deletes it when it stops. -1 keeps it until a person deletes it. Omit for the platform default. Provider-native timers are optional backup. |
579
- | `--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. |
580
- | `--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) |
581
- | `--ephemeral` | Mark the sandbox ephemeral: every stop destroys the machine and the next start boots fresh, while the record, URLs, and settings stay. Omit to use the image label ghostdock.ephemeral, or false when that label is absent. Does not change idle-stop or auto-delete. |
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, deletion protection, 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 logs`
838
+ ### `ghostdock snapshot get`
860
839
 
861
- 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).
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 logs <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`. |
872
- | `--tail <integer>` | The last N lines (at most 5000). |
873
- | `--after <string>` | Only lines after this time: the time of the last line already read. |
874
- | `--follow` | Keep printing new lines until Ctrl-C. |
875
- | `--timestamps` | Put each line's time in front of it. |
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`. |
876
850
 
877
- MCP tool: `sandboxes_containers_logs`.
851
+ MCP tool: `snapshot_get`.
878
852
 
879
- ### `ghostdock sandboxes containers protection`
853
+ ### `ghostdock snapshot list`
880
854
 
881
- Switch a container’s deletion protection on or off. A protected container cannot be removed or recreated (docker rm, compose down) until its protection is off. Starts the sandbox when needed.
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.
882
856
 
883
857
  ```
884
- ghostdock sandboxes containers protection <sandbox-id> <container> --protected <value> [flags]
858
+ ghostdock snapshot list [flags]
885
859
  ```
886
860
 
887
861
  | Argument | Description |
888
862
  | --- | --- |
889
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
890
- | `<container>` | Container, by name. Required. |
891
- | `--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`. |
892
- | `--protected` | true: protect it; false: allow removing it. Required. |
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`. |
893
864
 
894
- MCP tool: `sandboxes_containers_protection`.
865
+ MCP tool: `snapshot_list`.
895
866
 
896
- ### `ghostdock sandboxes containers restart`
867
+ ### `ghostdock snapshot update-manifest`
897
868
 
898
- 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.
899
870
 
900
871
  ```
901
- ghostdock sandboxes containers restart <sandbox-id> <container> [flags]
872
+ ghostdock snapshot update-manifest <snapshot-id> --manifest <object> [flags]
902
873
  ```
903
874
 
904
875
  | Argument | Description |
905
876
  | --- | --- |
906
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
907
- | `<container>` | Container, by name. Required. |
908
- | `--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. |
909
880
 
910
- MCP tool: `sandboxes_containers_restart`.
881
+ MCP tool: `snapshot_update_manifest`.
911
882
 
912
- ### `ghostdock sandboxes containers start`
883
+ ## `ghostdock template`
913
884
 
914
- Start a stopped container, as docker start does. A running container stays as it is. Starts the sandbox when needed.
885
+ ### `ghostdock template create`
886
+
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.
915
888
 
916
889
  ```
917
- ghostdock sandboxes containers start <sandbox-id> <container> [flags]
890
+ ghostdock template create --name <string> --title <string> --spec <object> [flags]
918
891
  ```
919
892
 
920
893
  | Argument | Description |
921
894
  | --- | --- |
922
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
923
- | `<container>` | Container, by name. Required. |
924
- | `--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. |
925
901
 
926
- MCP tool: `sandboxes_containers_start`.
902
+ MCP tool: `template_create`.
927
903
 
928
- ### `ghostdock sandboxes containers stop`
904
+ ### `ghostdock template delete`
929
905
 
930
- 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). The container main runs the sandbox: its stop is refused (main_is_the_sandbox), pause the sandbox instead. Deletion protection 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.
931
907
 
932
908
  ```
933
- ghostdock sandboxes containers stop <sandbox-id> <container> [flags]
909
+ ghostdock template delete <template> [flags]
934
910
  ```
935
911
 
936
912
  | Argument | Description |
937
913
  | --- | --- |
938
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
939
- | `<container>` | Container, by name. Required. |
940
- | `--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`. |
941
916
 
942
- MCP tool: `sandboxes_containers_stop`.
917
+ MCP tool: `template_delete`.
943
918
 
944
- ### `ghostdock sandboxes create`
919
+ ### `ghostdock template list`
945
920
 
946
- 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). Returns once the sandbox is running, with `boot`: how long the sandbox (VM) and, when one was started, its container took to start, each in ms. 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.
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.
947
922
 
948
923
  ```
949
- ghostdock sandboxes create --source <object> [flags]
924
+ ghostdock template list [flags]
950
925
  ```
951
926
 
952
927
  | Argument | Description |
953
928
  | --- | --- |
954
- | `--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`. |
955
- | `--display-name <string>` | Display name for the sandbox. Optional. |
956
- | `--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" boots Docker-in-Docker from the given inline files (must include docker-compose.yml/yaml or compose.yml/yaml; ghostdock.* service labels parsed for manifest). 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. |
957
- | `--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) |
958
- | `--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. |
959
- | `--auto-delete-interval-minutes <number>` | Minutes the sandbox stays stopped before the platform worker deletes the record. 0 deletes it when it stops. -1 keeps it until a person deletes it. Omit for the platform default. Provider-native timers are optional backup. |
960
- | `--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. |
961
- | `--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) |
962
- | `--ephemeral` | Mark the sandbox ephemeral: every stop destroys the machine and the next start boots fresh, while the record, URLs, and settings stay. Omit to use the image label ghostdock.ephemeral, or false when that label is absent. Does not change idle-stop or auto-delete. |
963
- | `--image-base <string>` | How the disk is made for one of Ghostdock's VM 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. |
964
- | `--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) |
965
- | `--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) |
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`. |
966
930
 
967
- MCP tool: `sandboxes_create`.
931
+ MCP tool: `template_list`.
968
932
 
969
- ### `ghostdock sandboxes default-container`
933
+ ### `ghostdock template update`
970
934
 
971
- 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.
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.
972
936
 
973
937
  ```
974
- ghostdock sandboxes default-container <sandbox-id> [flags]
938
+ ghostdock template update <template> [flags]
975
939
  ```
976
940
 
977
941
  | Argument | Description |
978
942
  | --- | --- |
979
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
980
- | `--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`. |
981
- | `--container <string>` | Container to make the default, by name. The running sandbox must have it. |
982
- | `--clear` | Clear the default. |
983
- | `--start` | Start the container first when it is not running, without asking. |
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) |
950
+
951
+ MCP tool: `template_update`.
952
+
953
+ ## `ghostdock tools`
984
954
 
985
- MCP tool: `sandboxes_default_container`.
955
+ List available agent tools.
956
+
957
+ ```
958
+ ghostdock tools
959
+ ```
960
+
961
+ ## `ghostdock vm`
962
+
963
+ Create, run and manage VMs.
986
964
 
987
- ### `ghostdock sandboxes delete`
965
+ ### `ghostdock vm build`
988
966
 
989
- Permanently delete a sandbox and its files.
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.
990
968
 
991
969
  ```
992
- ghostdock sandboxes delete <sandbox-id> [flags]
970
+ ghostdock vm build [path] --kind <value> [flags]
993
971
  ```
994
972
 
995
973
  | Argument | Description |
996
974
  | --- | --- |
997
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
998
- | `--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`. |
999
-
1000
- 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. |
1001
981
 
1002
- ### `ghostdock sandboxes env`
982
+ ### `ghostdock vm command`
1003
983
 
1004
- Environment of one sandbox.
984
+ Run commands in a VM and read their output.
1005
985
 
1006
- ### `ghostdock sandboxes env delete`
986
+ ### `ghostdock vm command get`
1007
987
 
1008
- Delete one of a sandbox’s own variables or secrets.
988
+ Get a shell command’s status and exit code.
1009
989
 
1010
990
  ```
1011
- ghostdock sandboxes env delete <name> --sandbox-id <string> [flags]
991
+ ghostdock vm command get <command-id> --vm <string> --session-id <string> [flags]
1012
992
  ```
1013
993
 
1014
994
  | Argument | Description |
1015
995
  | --- | --- |
1016
- | `<name>` | Environment variable name, e.g. DATABASE_URL. Letters, digits and underscores only. Case-sensitive; stored exactly as provided. Required. |
1017
- | `--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`. |
1018
- | `--sandbox-id <string>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1019
- | `--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. |
1020
1002
 
1021
- MCP tool: `sandboxes_env_delete`.
1003
+ MCP tool: `vm_command_get`.
1022
1004
 
1023
- ### `ghostdock sandboxes env get`
1005
+ ### `ghostdock vm command kill`
1024
1006
 
1025
- 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.
1026
1008
 
1027
1009
  ```
1028
- ghostdock sandboxes env get <sandbox-id> [flags]
1010
+ ghostdock vm command kill <command-id> --vm <string> --session-id <string> [flags]
1029
1011
  ```
1030
1012
 
1031
1013
  | Argument | Description |
1032
1014
  | --- | --- |
1033
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. 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`. |
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. |
1035
1021
 
1036
- MCP tool: `sandboxes_env_get`.
1022
+ MCP tool: `vm_command_kill`.
1037
1023
 
1038
- ### `ghostdock sandboxes env select`
1024
+ ### `ghostdock vm command logs`
1039
1025
 
1040
- 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.
1041
1027
 
1042
1028
  ```
1043
- ghostdock sandboxes env select <sandbox-id> --environment <array> [flags]
1029
+ ghostdock vm command logs <command-id> --vm <string> --session-id <string> [flags]
1044
1030
  ```
1045
1031
 
1046
1032
  | Argument | Description |
1047
1033
  | --- | --- |
1048
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1049
- | `--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`. |
1050
- | `--environment <array>` | Organization catalogue entry names to export under their own names. Pass [] to clear plain selections. (JSON array) Required. |
1051
- | `--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) |
1052
- | `--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. |
1053
1041
 
1054
- MCP tool: `sandboxes_env_select`.
1042
+ MCP tool: `vm_command_logs`.
1055
1043
 
1056
- ### `ghostdock sandboxes env set`
1044
+ ### `ghostdock vm command run`
1057
1045
 
1058
- 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.
1059
1047
 
1060
1048
  ```
1061
- ghostdock sandboxes env set <name> --sandbox-id <string> --value <string> [flags]
1049
+ ghostdock vm command run <vm> --command <string> [flags]
1062
1050
  ```
1063
1051
 
1064
1052
  | Argument | Description |
1065
1053
  | --- | --- |
1066
- | `<name>` | Environment variable name, e.g. DATABASE_URL. Letters, digits and underscores only. Case-sensitive; stored exactly as provided. Required. |
1067
- | `--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`. |
1068
- | `--sandbox-id <string>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1069
- | `--value <string>` | The value to store. A secret value can be replaced later but never read back. Required. |
1070
- | `--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. |
1071
- | `--comment <string>` | Optional note shown with the entry, e.g. what it is for. |
1072
- | `--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. |
1073
1062
 
1074
- MCP tool: `sandboxes_env_set`.
1063
+ MCP tool: `vm_command_run`.
1075
1064
 
1076
- ### `ghostdock sandboxes files`
1065
+ ### `ghostdock vm container`
1077
1066
 
1078
- Files inside a sandbox.
1067
+ Containers of a VM’s Docker engine.
1079
1068
 
1080
- ### `ghostdock sandboxes files list`
1069
+ ### `ghostdock vm container list`
1081
1070
 
1082
- List the files in a sandbox directory (default /workspace).
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).
1083
1072
 
1084
1073
  ```
1085
- ghostdock sandboxes files list <sandbox-id> [flags]
1074
+ ghostdock vm container list <vm> [flags]
1086
1075
  ```
1087
1076
 
1088
1077
  | Argument | Description |
1089
1078
  | --- | --- |
1090
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1091
- | `--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`. |
1092
- | `--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. |
1093
- | `--path <string>` | Directory to list. Absolute or relative to /. Defaults to /workspace. |
1094
- | `--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`. |
1095
1081
 
1096
- MCP tool: `sandboxes_files_list`.
1082
+ MCP tool: `vm_container_list`.
1097
1083
 
1098
- ### `ghostdock sandboxes files read`
1084
+ ### `ghostdock vm container lock`
1099
1085
 
1100
- 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.
1101
1087
 
1102
1088
  ```
1103
- ghostdock sandboxes files read <path> --sandbox-id <string> [flags]
1089
+ ghostdock vm container lock <vm> <container> [flags]
1104
1090
  ```
1105
1091
 
1106
1092
  | Argument | Description |
1107
1093
  | --- | --- |
1108
- | `<path>` | File path. Absolute or relative to / (for example /workspace/src/App.vue). Required. |
1109
- | `--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`. |
1110
- | `--sandbox-id <string>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1111
- | `--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. |
1112
- | `--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`. |
1113
1097
 
1114
- MCP tool: `sandboxes_files_read`.
1098
+ MCP tool: `vm_container_lock`.
1115
1099
 
1116
- ### `ghostdock sandboxes files upload`
1100
+ ### `ghostdock vm container logs`
1117
1101
 
1118
- Upload local files or directories to a sandbox using multipart form data.
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).
1119
1103
 
1120
1104
  ```
1121
- ghostdock sandboxes files upload <sandbox-id> [path] [flags]
1105
+ ghostdock vm container logs <vm> <container> [flags]
1122
1106
  ```
1123
1107
 
1124
1108
  | Argument | Description |
1125
1109
  | --- | --- |
1126
- | `<sandbox-id>` | Sandbox name or id. Required. |
1127
- | `--org <value>` | Organization id or slug, from `ghostdock organizations list` (default: GHOSTDOCK_ORG, then `ghostdock organizations use`). |
1128
- | `--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. |
1129
- | `--start` | Start the container first when it is not running, without asking. |
1130
- | `--zip <value>` | Local ZIP file to upload. |
1131
- | `<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. |
1132
1117
 
1133
- MCP tool: `sandboxes_files_upload`.
1118
+ MCP tool: `vm_container_logs`.
1134
1119
 
1135
- ### `ghostdock sandboxes list`
1120
+ ### `ghostdock vm container restart`
1136
1121
 
1137
- List the sandboxes of an organization, including whether each is ephemeral. 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.
1138
1123
 
1139
1124
  ```
1140
- ghostdock sandboxes list [flags]
1125
+ ghostdock vm container restart <vm> <container> [flags]
1141
1126
  ```
1142
1127
 
1143
1128
  | Argument | Description |
1144
1129
  | --- | --- |
1145
- | `--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`. |
1146
-
1147
- MCP tool: `sandboxes_list`.
1148
-
1149
- ### `ghostdock sandboxes mcps`
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`. |
1150
1133
 
1151
- MCP endpoints a sandbox exposes.
1134
+ MCP tool: `vm_container_restart`.
1152
1135
 
1153
- ### `ghostdock sandboxes mcps create`
1136
+ ### `ghostdock vm container start`
1154
1137
 
1155
- Expose an MCP server running in a sandbox. Idempotent by name.
1138
+ Start a stopped container, as docker start does. A running container stays as it is. Starts the VM when needed.
1156
1139
 
1157
1140
  ```
1158
- ghostdock sandboxes mcps create <sandbox-id> --name <string> --port <integer> [flags]
1141
+ ghostdock vm container start <vm> <container> [flags]
1159
1142
  ```
1160
1143
 
1161
1144
  | Argument | Description |
1162
1145
  | --- | --- |
1163
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1164
- | `--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`. |
1165
- | `--name <string>` | Endpoint name, unique in the sandbox. Letters, digits, _ and -, starting with a letter. Required. |
1166
- | `--port <integer>` | Port the MCP server listens on inside the sandbox. Required. |
1167
- | `--path <string>` | HTTP path of the MCP endpoint. Default /mcp. |
1168
- | `--auto-wake` | Start the sandbox when the endpoint is called while it is stopped. Default false. |
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`. |
1169
1149
 
1170
- MCP tool: `sandboxes_mcps_create`.
1150
+ MCP tool: `vm_container_start`.
1171
1151
 
1172
- ### `ghostdock sandboxes mcps delete`
1152
+ ### `ghostdock vm container stop`
1173
1153
 
1174
- Delete an MCP endpoint of a sandbox.
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.
1175
1155
 
1176
1156
  ```
1177
- ghostdock sandboxes mcps delete <mcp-id>
1157
+ ghostdock vm container stop <vm> <container> [flags]
1178
1158
  ```
1179
1159
 
1180
1160
  | Argument | Description |
1181
1161
  | --- | --- |
1182
- | `<mcp-id>` | MCP endpoint id, from sandboxes mcps list or sandboxes mcps create. Required. |
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`. |
1183
1165
 
1184
- MCP tool: `sandboxes_mcps_delete`.
1166
+ MCP tool: `vm_container_stop`.
1185
1167
 
1186
- ### `ghostdock sandboxes mcps list`
1168
+ ### `ghostdock vm container unlock`
1187
1169
 
1188
- List the MCP endpoints a sandbox exposes (name, port, path, autoWake).
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.
1189
1171
 
1190
1172
  ```
1191
- ghostdock sandboxes mcps list <sandbox-id> [flags]
1173
+ ghostdock vm container unlock <vm> <container> [flags]
1192
1174
  ```
1193
1175
 
1194
1176
  | Argument | Description |
1195
1177
  | --- | --- |
1196
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1197
- | `--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`. |
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`. |
1198
1181
 
1199
- MCP tool: `sandboxes_mcps_list`.
1182
+ MCP tool: `vm_container_unlock`.
1200
1183
 
1201
- ### `ghostdock sandboxes mcps update`
1184
+ ### `ghostdock vm create`
1202
1185
 
1203
- Change an MCP endpoint’s name, port, path or autoWake setting.
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.
1204
1187
 
1205
1188
  ```
1206
- ghostdock sandboxes mcps update <mcp-id> [flags]
1189
+ ghostdock vm create --source <object> [flags]
1207
1190
  ```
1208
1191
 
1209
1192
  | Argument | Description |
1210
1193
  | --- | --- |
1211
- | `<mcp-id>` | MCP endpoint id, from sandboxes mcps list or sandboxes mcps create. Required. |
1212
- | `--name <string>` | New endpoint name. Omit to keep it. |
1213
- | `--port <integer>` | New port inside the sandbox. Omit to keep it. |
1214
- | `--path <string>` | New HTTP path. Omit to keep it. |
1215
- | `--auto-wake` | Start the sandbox when the endpoint is called while it is stopped. Omit to keep it. |
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) |
1216
1207
 
1217
- MCP tool: `sandboxes_mcps_update`.
1208
+ MCP tool: `vm_create`.
1218
1209
 
1219
- ### `ghostdock sandboxes resize`
1210
+ ### `ghostdock vm default-container`
1220
1211
 
1221
- 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.
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.
1222
1213
 
1223
1214
  ```
1224
- ghostdock sandboxes resize <sandbox-id> [flags]
1215
+ ghostdock vm default-container <vm> [flags]
1225
1216
  ```
1226
1217
 
1227
1218
  | Argument | Description |
1228
1219
  | --- | --- |
1229
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1230
- | `--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`. |
1231
- | `--cpu <number>` | Number of CPUs. |
1232
- | `--memory-gib <number>` | Memory in GiB. |
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_resize`.
1226
+ MCP tool: `vm_default_container`.
1235
1227
 
1236
- ### `ghostdock sandboxes resize-disk`
1228
+ ### `ghostdock vm delete`
1237
1229
 
1238
- Grow a sandbox’s disk. The sandbox must be stopped first (this tool does not stop it). Disk only grows, never shrinks.
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-disk <sandbox-id> --disk-gib <number> [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
- | `--disk-gib <number>` | New total disk size in GiB; must be larger than the current size. Required. |
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`.
1249
1243
 
1250
- MCP tool: `sandboxes_resize_disk`.
1244
+ ### `ghostdock vm env`
1251
1245
 
1252
- ### `ghostdock sandboxes set-boot`
1246
+ Environment of one VM.
1253
1247
 
1254
- Register a command that starts now and again after every restart. For example bun dev. On Compose it runs after the stack; on a Dockerfile it replaces the image CMD. Snapshots cannot register one. Read the sandbox-boot skill (`ghostdock skills get sandbox-boot`).
1248
+ ### `ghostdock vm env delete`
1249
+
1250
+ Delete one of a VM’s own variables or secrets.
1255
1251
 
1256
1252
  ```
1257
- ghostdock sandboxes set-boot <sandbox-id> --command <string> [flags]
1253
+ ghostdock vm env delete <name> --vm <string> [flags]
1258
1254
  ```
1259
1255
 
1260
1256
  | Argument | Description |
1261
1257
  | --- | --- |
1262
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1263
- | `--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`. |
1264
- | `--command <string>` | Command to start, e.g. bun dev. Required. |
1265
- | `--cwd <string>` | Directory to run it in. Default /. |
1266
- | `--start` | Also start it now, not only after restarts. Default true. |
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. |
1267
1262
 
1268
- MCP tool: `sandboxes_set_boot`.
1263
+ MCP tool: `vm_env_delete`.
1269
1264
 
1270
- ### `ghostdock sandboxes shells`
1265
+ ### `ghostdock vm env get`
1271
1266
 
1272
- 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.
1273
1268
 
1274
- ### `ghostdock sandboxes shells close`
1269
+ ```
1270
+ ghostdock vm env get <vm> [flags]
1271
+ ```
1275
1272
 
1276
- 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`).
1277
1283
 
1278
1284
  ```
1279
- ghostdock sandboxes shells close <session-id> --sandbox-id <string> [flags]
1285
+ ghostdock vm env select <vm> --environment <array> [flags]
1280
1286
  ```
1281
1287
 
1282
1288
  | Argument | Description |
1283
1289
  | --- | --- |
1284
- | `<session-id>` | Session id from sandboxes shells create. Required. |
1285
- | `--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`. |
1286
- | `--sandbox-id <string>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1287
- | `--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. |
1288
- | `--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. |
1289
1295
 
1290
- MCP tool: `sandboxes_shells_close`.
1296
+ MCP tool: `vm_env_select`.
1291
1297
 
1292
- ### `ghostdock sandboxes shells create`
1298
+ ### `ghostdock vm env set`
1293
1299
 
1294
- 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.
1295
1301
 
1296
1302
  ```
1297
- ghostdock sandboxes shells create <sandbox-id> [flags]
1303
+ ghostdock vm env set <name> --vm <string> --value <string> [flags]
1298
1304
  ```
1299
1305
 
1300
1306
  | Argument | Description |
1301
1307
  | --- | --- |
1302
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1303
- | `--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`. |
1304
- | `--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. |
1305
- | `--session-id <string>` | Id for the new session: a slug; user-cmd, image-cmd and compose are reserved. Omit to generate one. |
1306
- | `--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. |
1307
1315
 
1308
- MCP tool: `sandboxes_shells_create`.
1316
+ MCP tool: `vm_env_set`.
1309
1317
 
1310
- ### `ghostdock sandboxes ssh`
1318
+ ### `ghostdock vm file`
1311
1319
 
1312
- SSH access to a sandbox.
1320
+ Files inside a VM.
1313
1321
 
1314
- ### `ghostdock sandboxes ssh get`
1322
+ ### `ghostdock vm file list`
1315
1323
 
1316
- 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).
1317
1325
 
1318
1326
  ```
1319
- ghostdock sandboxes ssh get <sandbox-id> [flags]
1327
+ ghostdock vm file list <vm> [flags]
1320
1328
  ```
1321
1329
 
1322
1330
  | Argument | Description |
1323
1331
  | --- | --- |
1324
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1325
- | `--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`. |
1326
- | `--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. |
1327
1336
  | `--start` | Start the container first when it is not running, without asking. |
1328
1337
 
1329
- MCP tool: `sandboxes_ssh_get`.
1338
+ MCP tool: `vm_file_list`.
1330
1339
 
1331
- ### `ghostdock sandboxes ssh revoke`
1340
+ ### `ghostdock vm file read`
1332
1341
 
1333
- Revoke a sandbox’s active SSH access.
1342
+ Read a file from a VM: utf8 text, or base64 for small binaries.
1334
1343
 
1335
1344
  ```
1336
- ghostdock sandboxes ssh revoke <sandbox-id> [flags]
1345
+ ghostdock vm file read <path> --vm <string> [flags]
1337
1346
  ```
1338
1347
 
1339
1348
  | Argument | Description |
1340
1349
  | --- | --- |
1341
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1342
- | `--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. |
1343
1355
 
1344
- MCP tool: `sandboxes_ssh_revoke`.
1356
+ MCP tool: `vm_file_read`.
1345
1357
 
1346
- ### `ghostdock sandboxes status`
1358
+ ### `ghostdock vm file upload`
1347
1359
 
1348
- 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 /).
1349
1361
 
1350
1362
  ```
1351
- ghostdock sandboxes status <sandbox-id> [flags]
1363
+ ghostdock vm file upload <vm> [path] [flags]
1352
1364
  ```
1353
1365
 
1354
1366
  | Argument | Description |
1355
1367
  | --- | --- |
1356
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1357
- | `--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). |
1358
1374
 
1359
- MCP tool: `sandboxes_status`.
1375
+ MCP tool: `vm_file_upload`.
1360
1376
 
1361
- ### `ghostdock sandboxes stop`
1377
+ ### `ghostdock vm list`
1362
1378
 
1363
- 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`.
1364
1380
 
1365
1381
  ```
1366
- ghostdock sandboxes stop <sandbox-id> [flags]
1382
+ ghostdock vm list [flags]
1367
1383
  ```
1368
1384
 
1369
1385
  | Argument | Description |
1370
1386
  | --- | --- |
1371
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1372
- | `--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`. |
1388
+
1389
+ MCP tool: `vm_list`.
1373
1390
 
1374
- MCP tool: `sandboxes_stop`.
1391
+ ### `ghostdock vm mcp`
1375
1392
 
1376
- ### `ghostdock sandboxes storage`
1393
+ MCP endpoints a VM exposes.
1377
1394
 
1378
- ### `ghostdock sandboxes storage delete`
1395
+ ### `ghostdock vm mcp create`
1379
1396
 
1380
- 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.
1397
+ Expose an MCP server running in a VM. Idempotent by name.
1381
1398
 
1382
1399
  ```
1383
- ghostdock sandboxes storage delete <sandbox-id> --kind <string> --name <string> [flags]
1400
+ ghostdock vm mcp create <vm> --name <string> --port <integer> [flags]
1384
1401
  ```
1385
1402
 
1386
1403
  | Argument | Description |
1387
1404
  | --- | --- |
1388
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1389
- | `--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`. |
1390
- | `--kind <string>` | volume or folder. Required. |
1391
- | `--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. |
1392
1411
 
1393
- MCP tool: `sandboxes_storage_delete`.
1412
+ MCP tool: `vm_mcp_create`.
1394
1413
 
1395
- ### `ghostdock sandboxes storage list`
1414
+ ### `ghostdock vm mcp delete`
1396
1415
 
1397
- 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.
1398
1417
 
1399
1418
  ```
1400
- ghostdock sandboxes storage list <sandbox-id> [flags]
1419
+ ghostdock vm mcp delete <mcp-id>
1401
1420
  ```
1402
1421
 
1403
1422
  | Argument | Description |
1404
1423
  | --- | --- |
1405
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1406
- | `--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`.
1427
+
1428
+ ### `ghostdock vm mcp list`
1407
1429
 
1408
- MCP tool: `sandboxes_storage_list`.
1430
+ List the MCP endpoints a VM exposes (name, port, path, autoWake).
1431
+
1432
+ ```
1433
+ ghostdock vm mcp list <vm> [flags]
1434
+ ```
1409
1435
 
1410
- ### `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`. |
1411
1440
 
1412
- Tools of the MCP servers inside a sandbox.
1441
+ MCP tool: `vm_mcp_list`.
1413
1442
 
1414
- ### `ghostdock sandboxes tools call`
1443
+ ### `ghostdock vm mcp update`
1415
1444
 
1416
- 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.
1417
1446
 
1418
1447
  ```
1419
- ghostdock sandboxes tools call <name> --sandbox-id <string> --arguments <object> [flags]
1448
+ ghostdock vm mcp update <mcp-id> [flags]
1420
1449
  ```
1421
1450
 
1422
1451
  | Argument | Description |
1423
1452
  | --- | --- |
1424
- | `<name>` | Tool name, from sandboxes tools list. Required. |
1425
- | `--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`. |
1426
- | `--sandbox-id <string>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1427
- | `--arguments <object>` | Tool arguments as a JSON object. (JSON object) Required. |
1428
- | `--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. |
1429
1458
 
1430
- MCP tool: `sandboxes_tools_call`.
1459
+ MCP tool: `vm_mcp_update`.
1431
1460
 
1432
- ### `ghostdock sandboxes tools list`
1461
+ ### `ghostdock vm resize`
1433
1462
 
1434
- 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.
1435
1464
 
1436
1465
  ```
1437
- ghostdock sandboxes tools list <sandbox-id> [flags]
1466
+ ghostdock vm resize <vm> [flags]
1438
1467
  ```
1439
1468
 
1440
1469
  | Argument | Description |
1441
1470
  | --- | --- |
1442
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1443
- | `--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`. |
1444
- | `--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. |
1445
1475
 
1446
- MCP tool: `sandboxes_tools_list`.
1476
+ MCP tool: `vm_resize`.
1447
1477
 
1448
- ### `ghostdock sandboxes update`
1478
+ ### `ghostdock vm resize-disk`
1449
1479
 
1450
- Change a sandbox’s display name, idle-stop or auto-delete interval. Omit a field to keep it; null resets it to the platform default.
1480
+ Grow a VM’s disk. The VM must be stopped first (this tool does not stop it). Disk only grows, never shrinks.
1451
1481
 
1452
1482
  ```
1453
- ghostdock sandboxes update <sandbox-id> [flags]
1483
+ ghostdock vm resize-disk <vm> --disk-gib <number> [flags]
1454
1484
  ```
1455
1485
 
1456
1486
  | Argument | Description |
1457
1487
  | --- | --- |
1458
- | `<sandbox-id>` | Sandbox name (e.g. quiet-harbor) or id, from sandboxes list or sandboxes create. Names are unique within the organization. Required. |
1459
- | `--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`. |
1460
- | `--display-name <string>` | New display name. Null clears it; omit to keep it. |
1461
- | `--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. |
1462
- | `--auto-delete-interval-minutes <number>` | Minutes the sandbox stays stopped before the record is deleted. 0 deletes it when it stops. -1 keeps it. Null resets to the platform default. Provider-native timers are optional backup. |
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. |
1531
+
1532
+ MCP tool: `vm_shell_create`.
1533
+
1534
+ ### `ghostdock vm ssh`
1501
1535
 
1502
- MCP tool: `sandboxes_urls_delete`.
1536
+ SSH access to a VM.
1503
1537
 
1504
- ### `ghostdock sandboxes urls list`
1538
+ ### `ghostdock vm ssh get`
1505
1539
 
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.
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. |
1669
+
1670
+ MCP tool: `vm_tool_list`.
1671
+
1672
+ ### `ghostdock vm up`
1616
1673
 
1617
- ## `ghostdock snapshots`
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.
1675
+
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) |
1618
1693
 
1619
- Sandbox snapshots.
1694
+ MCP tool: `vm_up`.
1620
1695
 
1621
- ### `ghostdock snapshots create`
1696
+ ### `ghostdock vm update`
1622
1697
 
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.
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.