Skip to content

mise bootstrap ​

  • Usage: mise bootstrap [FLAGS] [SUBCOMMAND]
  • Aliases: bs
  • Effect: destructive — may delete or irreversibly overwrite
  • Source code: src/cli/bootstrap.rs

Set up this machine from your mise config

Applies each part your config declares, in this order. Each step names its parts as --only and --skip accept them, followed by any condition.

  1. accounts, then plugins (package manager plugins)
  2. files with phase = "pre-packages", then built-in packages
  3. The remaining files, then services, firewall, and compose
  4. repos, then dotfiles
  5. mise-shell-activate, macos-defaults, and macos-launchd-agents
  6. linux-systemd-units, then user (the login shell)
  7. tools
  8. Plugin packages, then user services with requires_tools = true
  9. task (the bootstrap task, if defined), then final-hook

Hooks run before and after packages, repos, dotfiles, macOS defaults, the login shell, and tools. The post-packages hook runs right after built-in packages, or after plugin packages when any are configured. See https://mise.jdx.dev/bootstrap.html#how-it-runs.

Parts that already match the config are left alone, but hooks and the bootstrap task run every time, so make them safe to repeat. Checking dotfile state can render templates, which may run exec().

Preview with --dry-run. To inspect without applying, use mise bootstrap status for current state or mise bootstrap plan for resource-level changes.

Flags ​

  • --from <GIT_URL> — Clone a bootstrap project (a Git repository with a mise.toml) and apply it

    The checkout is reused on later runs; add --update to fast-forward it first. Append ?ref=<branch|tag|commit> to check out a ref instead of the default branch, for example https://github.com/example/workstation.git?ref=v1. See https://mise.jdx.dev/bootstrap/from-repository.html.

  • --adopt <GIT_URL|OWNER/REPO> — Clone a repository of global mise config or dotfile history, then apply it

    A repository of global config (config.toml, conf.d/, tasks/) is cloned into the global config directory, normally ~/.config/mise. A setup repository shared with mise dotfiles origin set restores its tracked files instead. OWNER/REPO is short for https://github.com/OWNER/REPO.git.

  • --replace-history — Discard this machine's dotfile history and adopt the repository's

    Use it with --adopt when the two histories are unrelated. Files that differ from the repository still stop the adoption until you resolve them, or add --take-remote-all to take the repository's version of each.

  • --take-remote-all — Take the setup repository's version of every existing file that differs while adopting

    The replaced versions are saved first, so mise dot undo restores them.

  • --from-dir <DIR> — Directory for the --from checkout (default: $MISE_DATA_DIR/bootstrap-repo)

  • -n --dry-run — Show what would change without changing anything

    Hooks and the bootstrap task are printed instead of run.

  • -y --yes — Skip confirmation prompts

  • --skip-dirty — Skip configured repositories with local changes instead of failing

  • --force-dotfiles — Overwrite existing files that conflict with whole-file dotfile entries

  • --only <PART> — Run only these parts

    Repeat the flag or separate parts with commas. Cannot be combined 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

  • --prompt-secrets — Prompt securely for missing bootstrap secret inputs

  • --prompt-vars — Ask for [vars] entries that declare a prompt and have no saved answer

    mise saves each answer under $MISE_STATE_DIR, not in any config file, and never asks for it again. Without a terminal, a var keeps its default. A --dry-run still saves the answers it asks for.

  • --skip <PART> — Skip these parts

    Repeat the flag or separate parts with commas. Cannot be combined with --only.

    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

  • --update — Refresh package metadata and update repositories before applying

    Also fast-forwards a checkout that --from or --adopt reuses. Without --update, a reused checkout stays at its current commit.

  • -h --help — Print help

Examples ​

Preview every configured part

mise bootstrap --dry-run

Apply every configured part

mise bootstrap

Apply only dotfiles and tools

mise bootstrap --only dotfiles,tools

Apply everything except tools and the bootstrap task

mise bootstrap --skip tools,task

Replace files that conflict with whole-file dotfile entries

mise bootstrap --force-dotfiles

Clone a bootstrap project and apply it

mise bootstrap --from git@github.com:example/workstation.git

Do the same and also load the project's mise.work.toml

mise -E work bootstrap --from git@github.com:example/workstation.git

Clone global config into ~/.config/mise, then apply it

mise bootstrap --adopt example/mise-config

Use a setup repository's dotfile history instead of this machine's

mise bootstrap --adopt example/setup --replace-history --yes

Refresh package metadata and fast-forward repositories first

mise bootstrap --update

Subcommands ​

MIT LicenseCopyright © 2026jdx.dev