---
title: Reference
description: "The microvm command surface and the daemon's wire schema, generated from the files the binaries themselves emit."
---

## 1. What this tier is

This tier is generated. Its pages are built from two files the binaries emit about themselves: `docs/manifest.json`, the output of `microvm manifest` at version `0.8.0`, and `docs/schema.json`, the daemon's JSON schema. Where a page states a count, the number is the length of an array in one of those files, so a page here cannot name a command or a code the binary does not have.

| Page | Holds | Members |
| --- | --- | --- |
| [Commands](/microvms-agentd/reference/#2-the-commands) | one page per subcommand | 28 |
| [Exit codes](/microvms-agentd/reference/exit-codes/) | process statuses and their stable codes | 17 |
| [The envelope](/microvms-agentd/reference/envelope/) | fields across the success and error shapes | 12 |
| [Response types](/microvms-agentd/reference/response-types/) | distinct payload shapes | 26 |
| [Wire schema](/microvms-agentd/reference/wire-schema/) | daemon types under `$defs` | 21 |

## 2. The commands

`microvm` accepts 28 commands, each with its own page. The order is the manifest's, which is also the sidebar's.

| Command | Summary | Response type |
| --- | --- | --- |
| [`microvm run`](/microvms-agentd/reference/commands/run/) | Build an image, launch a VM, run a command, report the cost, tear it down | `microvm.run` |
| [`microvm quickstart`](/microvms-agentd/reference/commands/quickstart/) | Zero to a live exec: provision the daemon, build, launch, run, report, tear down | `microvm.run` |
| [`microvm build`](/microvms-agentd/reference/commands/build/) | Build a MicroVM image and wait for it to be usable | `microvm.image` |
| [`microvm agent-up`](/microvms-agentd/reference/commands/agent-up/) | Bring up a VM with a coding agent in it: image, launch, model credentials, non-root user | `microvm.agent` |
| [`microvm agent-prompt`](/microvms-agentd/reference/commands/agent-prompt/) | Hand a coding agent in a running agent VM one task, headless, as the non-root user | `microvm.agent.prompt` |
| [`microvm exec`](/microvms-agentd/reference/commands/exec/) | Run one command in a MicroVM that is already running | `microvm.exec` |
| [`microvm health`](/microvms-agentd/reference/commands/health/) | Ask a running MicroVM's daemon whether it is up, and what its identity repair did | `microvm.health` |
| [`microvm ack`](/microvms-agentd/reference/commands/ack/) | Release a finished exec's buffered output, which starts its collection clock | `microvm.exec` |
| [`microvm kill`](/microvms-agentd/reference/commands/kill/) | Stop a running exec: SIGTERM its whole process group, SIGKILL after the daemon's grace | `microvm.kill` |
| [`microvm ps`](/microvms-agentd/reference/commands/ps/) | List what is running in a MicroVM: every exec's process group and its live pids | `microvm.procs` |
| [`microvm stdin`](/microvms-agentd/reference/commands/stdin/) | Write to a running exec's stdin, and optionally close it | `microvm.stdin` |
| [`microvm cp`](/microvms-agentd/reference/commands/cp/) | Copy a file or a tar archive between here and a running MicroVM | `microvm.copy` |
| [`microvm sync`](/microvms-agentd/reference/commands/sync/) | Sync a project directory into a running MicroVM's /workspace, uploading only what changed | `microvm.sync` |
| [`microvm attach`](/microvms-agentd/reference/commands/attach/) | Register a name for a running MicroVM this state directory did not launch | `microvm.attach` |
| [`microvm tunnel`](/microvms-agentd/reference/commands/tunnel/) | Tunnel arbitrary TCP to a guest port, so `psql` or `ssh` here reaches a server in the VM | `microvm.tunnel` |
| [`microvm port-forward`](/microvms-agentd/reference/commands/port-forward/) | Serve a guest port on localhost, so a browser here reaches a server in the VM | `microvm.port-forward` |
| [`microvm shell`](/microvms-agentd/reference/commands/shell/) | Open an interactive root shell in a running MicroVM — a real PTY, with job control, signals, and resize | `microvm.shell` |
| [`microvm suspend`](/microvms-agentd/reference/commands/suspend/) | Freeze a MicroVM. It keeps its memory, filesystem, token, and endpoint | `microvm.state` |
| [`microvm resume`](/microvms-agentd/reference/commands/resume/) | Thaw a suspended MicroVM and report its endpoint | `microvm.state` |
| [`microvm terminate`](/microvms-agentd/reference/commands/terminate/) | Tear down a MicroVM, and optionally its image and build log group | `microvm.teardown` |
| [`microvm ls`](/microvms-agentd/reference/commands/ls/) | List what this CLI created and could not confirm it deleted; `--remote` asks the account too | `microvm.runs` |
| [`microvm history`](/microvms-agentd/reference/commands/history/) | Print what was asked of one MicroVM and what the platform reported back | `microvm.history` |
| [`microvm logs`](/microvms-agentd/reference/commands/logs/) | Name an image's build log group and print the `aws logs tail` command that reads it | `microvm.logs` |
| [`microvm cost`](/microvms-agentd/reference/commands/cost/) | What a run cost, or what a plan will cost. Every figure labelled | `microvm.cost` |
| [`microvm doctor`](/microvms-agentd/reference/commands/doctor/) | Check every prerequisite and say which one is wrong | `microvm.doctor` |
| [`microvm manifest`](/microvms-agentd/reference/commands/manifest/) | Emit the whole command surface, its exit codes, and its envelope schema | `microvm.manifest` |
| [`microvm constants`](/microvms-agentd/reference/commands/constants/) | Emit every service constraint this client believes, for the drift gate | `microvm.constants` |
| [`microvm dockerfile`](/microvms-agentd/reference/commands/dockerfile/) | Print the Dockerfile stanza that wraps any base image with agentd | `microvm.dockerfile` |

## 3. Global flags

The manifest publishes 3 command-wide flags under `globalFlags`. Each parses on either side of the subcommand, so `microvm --json ls` and `microvm ls --json` are the same invocation, and none appears in any command's own parameter table.

| Flag | Type | Default | Help |
| --- | --- | --- | --- |
| `--json` | `boolean` | none | Emit the typed JSON envelope on stdout instead of human output |
| `--dense` | `boolean` | none | Token-lean output, for a consumer paying per token: tab-separated alone, compact one-line JSON with `--json` |
| `--quiet` | `boolean` | none | Suppress progress on stderr. Warnings still print |

The manifest marks each command with `supportsJson`, and all 28 set it. So `--json` is accepted by every command, selects the envelope described on [The envelope](/microvms-agentd/reference/envelope/), and is left out of every per-command parameter table rather than repeated 28 times.

The manifest names no command-wide flag beyond these 3, so a flag neither this table nor a command page lists is not part of that command's surface as the manifest states it.

## 4. The annotated pages

3 further pages share this directory and are not generated from the manifest. They were produced by a per-file documentation pass over the source tree, and every factual claim in them carries a `path:line` citation:

* [`cli`](/microvms-agentd/reference/cli/)
* [`public-api`](/microvms-agentd/reference/public-api/)
* [`rpc-tools`](/microvms-agentd/reference/rpc-tools/)

## 5. Provenance

This page is generated from `docs/manifest.json`, the output of `microvm manifest`, together with `docs/schema.json` for the wire-schema page. `site/scripts/gen-reference.mjs` writes it into the site's content directory on every `pnpm run sync`, so an edit made here is overwritten by the next run.

To change the page, change the source. Regenerate the source with `mise run manifest` from the repository root; `mise run manifest:check` fails when the committed file no longer matches what the binary emits.