# mvm-cli
Clap-based CLI commands, bootstrap workflow, diagnostics, update mechanism, and template management. This is a **pure library crate** — the `mvmctl` binary lives in the root package and calls `mvm_cli::run()`.
## Modules
| `commands` | Main CLI entry point (`run()`), all command definitions and handlers |
| `bootstrap` | Full environment setup (Homebrew/apt, Lima, Nix, Firecracker) |
| `doctor` | System diagnostics and dependency checks (`mvmctl doctor`) |
| `update` | Self-update from GitHub releases |
| `template_cmd` | Template CRUD commands (create, list, build, delete, push, pull) |
| `logging` | Log format configuration (`LogFormat::Human` / `LogFormat::Json`) |
| `ui` | Terminal UI helpers (colored messages, spinners, prompts, status tables) |
| `fleet` | Fleet management commands |
| `http` | HTTP client utilities (for update checks) |
## Commands
| `mvmctl bootstrap` | Full setup from scratch |
| `mvmctl setup` | Create Lima VM, install Firecracker |
| `mvmctl dev` | Launch Lima dev environment (auto-bootstraps) |
| `mvmctl start [image]` | Start headless Firecracker microVM |
| `mvmctl stop [name]` | Stop a running microVM |
| `mvmctl shell` | Open a shell in the Lima VM |
| `mvmctl sync` | Build mvmctl from source inside Lima and install |
| `mvmctl build --flake .` | Build microVM image from Nix flake |
| `mvmctl run --flake .` | Build + start microVM |
| `mvmctl status` | Show Lima and microVM status |
| `mvmctl logs <name>` | Show microVM console or hypervisor logs |
| `mvmctl doctor [--json]` | System diagnostics |
| `mvmctl update` | Check for and install latest version |
| `mvmctl template <action>` | Manage global templates |
## Global Flags
- `--log-format <human|json>` — Output format (default: human)
- `--fc-version <version>` — Override Firecracker version
## Dependencies
- `mvm-core`, `mvm-runtime`, `mvm-build`, `mvm-guest`