docs/cli/bootstrap.md
mise bootstrapmise bootstrap [FLAGS] [SUBCOMMAND]src/cli/bootstrap/mod.rs[experimental] Set up a machine for the current config in one command
Runs the bootstrap steps for the current config in order:
[bootstrap.hooks.pre-packages] — optional setup hookmise bootstrap packages apply — install missing
[bootstrap.packages]
then [bootstrap.hooks.post-packages]mise bootstrap repos apply — clone/update [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 hooksmise 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 hooksmise install — install missing tools from [tools]
surrounded by pre-tools/post-tools hooksmise 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-runPrint what would happen without installing anything
-y --yesSkip confirmation prompts
--force-dotfilesOverwrite 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:
packagesreposdotfilesmise-shell-activateshellmacos-defaultsdefaultsmacos-launchd-agentslaunchdlinux-systemd-unitssystemdusertoolstaskfinal-hook--skip… <SKIP>Skip one or more bootstrap parts
Can be passed multiple times or as a comma-separated list.
Choices:
packagesreposdotfilesmise-shell-activateshellmacos-defaultsdefaultsmacos-launchd-agentslaunchdlinux-systemd-unitssystemdusertoolstaskfinal-hook--updateRefresh system package manager metadata first (apk: --update-cache, apt: apt-get update)
mise bootstrap dotfiles <SUBCOMMAND>mise bootstrap linux <SUBCOMMAND>mise bootstrap macos <SUBCOMMAND>mise bootstrap mise-shell-activate <SUBCOMMAND>mise bootstrap packages <SUBCOMMAND>mise bootstrap repos <SUBCOMMAND>mise bootstrap status [-J --json] [--missing]mise bootstrap user <SUBCOMMAND>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