runcloud 0.1.118 → 0.1.120

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.
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const CLI_VERSION = '0.1.118';
1
+ export const CLI_VERSION = '0.1.120';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "runcloud",
3
- "version": "0.1.118",
3
+ "version": "0.1.120",
4
4
  "description": "Create and control run.cloud remote mobile simulators and cloud sandboxes",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -12,11 +12,17 @@ Keep this skill as a router. Do not duplicate operational instructions here.
12
12
  iframe embeds, Metro tunnels, mobile assets, and mobile session cleanup.
13
13
  - Use `$run-cloud-sandboxes` for microVM sandboxes, command execution, files,
14
14
  snapshots, images, SSH, secrets, public ports, desktop automation, resource
15
- sizing, and sandbox cleanup.
15
+ sizing, sandbox cleanup, and investigating a broken sandbox.
16
16
  - Use both focused skills when a workflow genuinely combines mobile sessions
17
17
  and sandboxes. Follow each skill's authentication, security, metering, and
18
18
  cleanup guardrails.
19
19
 
20
+ Symptom phrasing ("is down", "stuck", "hung", "not responding", "why did it
21
+ stop") names no resource, so route on the id in hand: a sandbox id or tag goes to
22
+ `$run-cloud-sandboxes`, a session id to `$run-cloud-ios-simulator`. Each says
23
+ what its own signals do and do not mean, which is the part that cannot be
24
+ guessed from the outside.
25
+
20
26
  If the request is ambiguous, infer the product from the resource noun and
21
27
  desired outcome. Ask only when choosing the wrong product would materially
22
28
  change the work.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: run-cloud-sandboxes
3
- description: Operate run.cloud microVM sandboxes with the CLI or TypeScript SDK. Use for creating isolated compute, running commands, moving files, managing snapshots or images, exposing ports, using SSH or desktop automation, attaching secrets, sizing resources, or cleaning up sandboxes.
3
+ description: Operate and debug run.cloud microVM sandboxes with the CLI or TypeScript SDK. Use for creating isolated compute, running commands, moving files, managing snapshots or images, exposing ports, using SSH or desktop automation, attaching secrets, sizing resources, or cleaning up sandboxes. Also use to investigate a sandbox that is down, stuck, hung, unreachable, or not responding, to find out why one stopped or was destroyed, or to trace a sandbox from a log line by tag.
4
4
  ---
5
5
 
6
6
  # Operate run.cloud Sandboxes
@@ -274,6 +274,58 @@ Key names do not match the env vars, and `sops` needs
274
274
  see the Secrets section of the root `CLAUDE.md`/`AGENTS.md` before concluding
275
275
  you lack access.
276
276
 
277
+ ## What the Signals Mean When a Sandbox Misbehaves
278
+
279
+ `state` describes the microVM lease, not the workload inside it. A sandbox whose
280
+ process died an hour ago still reads `running`, so `running` on its own never
281
+ means healthy.
282
+
283
+ The console log is one file per sandbox carrying boot output, everything `exec`
284
+ printed, and lifecycle markers, interleaved in the order they happened.
285
+ `runcloud sandbox logs <id>` serves it, and it survives destroy: the host renames
286
+ the file rather than deleting it, so a post-mortem read works on a sandbox that
287
+ no longer exists.
288
+
289
+ Three limits that change what you can conclude from it:
290
+
291
+ - A destroyed sandbox's console gets removed after 14 days (2 weeks), so a
292
+ post-mortem has a deadline. A running or paused sandbox's log is never removed,
293
+ however long it has sat quiet.
294
+ - It is capped at 10 MiB and trimmed to the newest 5 MiB, so on a chatty workload
295
+ early output is gone, not merely paged out. An empty-looking start is a trim,
296
+ not proof the process printed nothing.
297
+ - `systemd-run` output goes to the journal, not the console, so those units never
298
+ appear here at all. Read `journalctl -u <unit>` inside the sandbox instead.
299
+
300
+ ### Lifecycle markers
301
+
302
+ The host writes a marker into the console on every transition:
303
+
304
+ ```
305
+ --- sandbox destroyed: timeout-sweep at 2026-08-05T11:02:11Z ---
306
+ ```
307
+
308
+ The events are `created`, `paused`, `resumed`, `stopped`, and `destroyed`. The
309
+ token after the colon is the control plane's actor, written verbatim so it can be
310
+ matched rather than parsed; the sentence around it is not a contract. Only stops
311
+ carry a reason, so `created` and `resumed` appear without one.
312
+
313
+ | actor | what it means |
314
+ | --- | --- |
315
+ | `timeout-sweep` | hit its `--timeout` lifetime cap. Not a crash |
316
+ | `idle-sweep` | idle-paused after `--idle-pause` seconds. Resumable, and not a failure |
317
+ | `retention-sweep` | destroyed after its 48h parked window expired |
318
+ | `pause` `resume` `stop` `archive` `restore` | a caller requested exactly this |
319
+ | `api` `api-force` | a caller destroyed it. `api-force` bypassed a wedged guest |
320
+ | `health-sweep` `host-reconcile` `reap-sweep` | the platform reclaimed it |
321
+ | `boot-failure` `placement-timeout` `request-timeout` `scheduler` | it never started. Capacity or image, not the workload |
322
+ | `image-built` `image-build-failure` | an async image build finished or failed |
323
+ | `startup-recover` `volume-lease-invalid` `replica-fork-resume-failure` | platform recovery paths |
324
+
325
+ A sandbox that failed before it ever reached a host has no console, because the
326
+ file is created at boot. Those carry a `Last error` row on
327
+ `runcloud sandbox get` instead, which is then the only record of the cause.
328
+
277
329
  ## Guardrails
278
330
 
279
331
  - Destroy every sandbox created during a task unless the user explicitly asks
@@ -1,4 +1,4 @@
1
1
  interface:
2
2
  display_name: "Run Cloud Sandboxes"
3
- short_description: "Operate secure remote microVM sandboxes"
4
- default_prompt: "Use $run-cloud-sandboxes to create, operate, and clean up run.cloud sandboxes."
3
+ short_description: "Operate and debug secure remote microVM sandboxes"
4
+ default_prompt: "Use $run-cloud-sandboxes to create, operate, debug, and clean up run.cloud sandboxes."