docs/cli/bootstrap.md
mise bootstrapmise bootstrap [FLAGS] [SUBCOMMAND]bssrc/cli/bootstrap.rsSet up a machine for the current config in one command
Runs the bootstrap steps for the current config in order:
mise bootstrap accounts apply — converge [bootstrap.users] and
[bootstrap.groups] (Linux)mise bootstrap plugins apply — install [bootstrap.plugins]
1.7. [bootstrap.hooks.pre-packages] — optional setup hook[bootstrap.packages]mise bootstrap files apply — converge [bootstrap.files] and
[bootstrap.directories]mise bootstrap services apply — converge [bootstrap.services]
systemd system services (Linux)mise bootstrap firewall apply — converge [bootstrap.linux.firewall]
host firewall policy and rules (Linux)mise bootstrap compose apply — converge [bootstrap.compose]
Docker Compose projectsmise bootstrap repos apply — clone/converge [bootstrap.repos]
surrounded by pre-repos/post-repos hooksmise bootstrap dotfiles apply — apply dotfiles from [dotfiles]
surrounded by pre-dotfiles/post-dotfiles hooksmise bootstrap mise-shell-activate apply — configure shell activation
from [bootstrap.mise_shell_activate]mise bootstrap macos defaults apply — write`[bootstrap.macos.defaults]` entries (macOS)
surrounded by `pre-defaults`/`post-defaults` hooks
mise bootstrap macos launchd-agents apply — install/load`[bootstrap.macos.launchd.agents]`
mise bootstrap linux systemd-units apply — install/start`[bootstrap.linux.systemd.units]`
mise bootstrap user apply — set [bootstrap.user].login_shell(Unix)
surrounded by `pre-user`/`post-user` hooks
mise install — install missing tools from [tools]surrounded by `pre-tools`/`post-tools` hooks; package-plugin entries
from `[bootstrap.packages]` install afterward, followed by
`[bootstrap.hooks.post-packages]`
mise run bootstrap — if a task named bootstrap is defined[bootstrap.hooks.final] — optional final hookThe declarative steps converge — anything already in its desired state
is skipped, so re-running is safe. The bootstrap task runs on every
invocation; keep it idempotent. Use it for any project-specific setup
that doesn't fit the declarative sections (seeding databases, auth flows,
etc.) — it runs with the installed tools on PATH.
Use --skip <part> to skip named parts, or --only <part> to run just
named parts. Both flags can be repeated or comma-separated, but they
cannot be used together.
-n --dry-run — Print what would happen without installing anything
-y --yes — Skip confirmation prompts
--force-dotfiles — Overwrite existing files that conflict with whole-file dotfile entries
--only… <ONLY> — Run only one or more bootstrap parts
Can be passed multiple times or as a comma-separated list. Cannot be used with --skip.
Choices: plugins, packages, accounts, files, services, firewall, compose, repos, dotfiles, mise-shell-activate, macos-defaults, macos-launchd-agents, linux-systemd-units, user, tools, task, final-hook, shell, defaults, launchd, systemd
--prompt-secrets — Prompt securely for missing bootstrap secret inputs
--skip… <SKIP> — Skip one or more bootstrap parts
Can be passed multiple times or as a comma-separated list.
Choices: plugins, packages, accounts, files, services, firewall, compose, repos, dotfiles, mise-shell-activate, macos-defaults, macos-launchd-agents, linux-systemd-units, user, tools, task, final-hook, shell, defaults, launchd, systemd
--update — Refresh package manager metadata and update configured repos
-h --help — Print help
Examples:
mise bootstrap # packages + repos + dotfiles + tools + bootstrap task
mise bootstrap --force-dotfiles # replace conflicting dotfile targets
mise bootstrap --skip tools,task # skip tool installation and the bootstrap task
mise bootstrap --only tools # run just tool installation
mise bootstrap status --missing
mise bootstrap packages apply --yes
mise bootstrap repos status
mise bootstrap repos apply --dry-run
mise bootstrap dotfiles status
mise bootstrap mise-shell-activate apply --dry-run
mise bootstrap macos defaults status
mise bootstrap macos launchd-agents apply --dry-run
mise bootstrap linux systemd-units apply --dry-run
mise bootstrap user apply --dry-run