murmur <command> --help on your VM: available flags depend on its installed version.
Know what stays alive
Address yourself explicitly
On a VM, a bare agent slug can resolve as a child, not yourself. For commands requiring a target, use your absolute path, including the workspace. Replace this example with your actual identity; inspectmurmur status --json if unsure.
murmur status and murmur on-idle, can omit the target on your own VM.
Resume later without keeping a turn open
--deliver-at with an explicit RFC3339 timestamp instead when the deadline is absolute; do not combine it with --deliver-in.
Include exact run IDs, repository/revision, evidence paths, completion criteria, and the next action in the message. Delivery does not guarantee immediate execution if another turn is active. Cancel stale reminders when completion or a user message makes them unnecessary:
murmur queue add "$SELF" 'Job finished; inspect the recorded exit status and logs.'; it must actually reach that command, and notification failure needs a recorded fallback.
Keep local work alive deliberately
Prefer finishing local work within the active turn. If it must outlive the turn:- Use a supervisor appropriate to the tool harness; plain
command &is not a survival guarantee. On Linux,nohup/setsidcan detach a process, but do not protect it from VM sleep or every harness cleanup policy. - Record the PID, command, immutable input revision, stdout/stderr paths, and an exit-status file written on completion. Verify process identity and advancing output before saying it is running. A missing exit-status file means unknown, not success.
- Keep the VM awake long enough, and arrange a completion notification or bounded fallback. A queued reminder alone does neither.
murmur on-idle keep-alive is available, but the VM continues accruing cost. Runtime policy changes support sleep and keep-alive, not changing a spawn-time terminate policy.
Once local work finishes, restore the recorded policy and timeout, remove obsolete reminders, and clean up supervisors. Verify the actual terminal status before reporting completion. Tell the requester whether you are waiting on local execution, external CI, or merely a scheduled follow-up—these are different things.