Bootstrap from a repository
mise bootstrap can clone a repository and run from the configuration in it. Use --from for a bootstrap project that lives apart from your global config, and --adopt to make a repository your global mise config or to restore a setup repository of tracked dotfiles.
Choose --from or --adopt
| Repository holds | Command | Where the repository goes | Afterwards |
|---|---|---|---|
A bootstrap project: mise.toml and the files it uses | mise bootstrap --from <url> | $MISE_DATA_DIR/bootstrap-repo, or --from-dir | Rerun the same command to apply the project again |
Global mise config: config.toml, conf.d/, tasks/ | mise bootstrap --adopt <url> | Your global config directory, ~/.config/mise | Every later mise command reads it as your global config |
A setup repository created with mise dot origin set | mise bootstrap --adopt <url> | mise's history store; files go to their paths | Later changes arrive through the history watcher or mise dot pull |
--adopt detects a setup repository by the .mise-history/format.toml file that mise dot origin set writes, so the same flag covers both kinds. --from and --adopt cannot be combined.
Either way, the bootstrap runs from the repository's configuration, and mise trusts that configuration for this run. Review the repository before you run the command. Add --dry-run to preview, and -E <env> to select a config environment, such as -E work for mise.work.toml in a bootstrap project or config.work.toml in global config.
Bootstrap project (--from)
A bootstrap project is a repository with a mise.toml and the source files it refers to, such as dotfiles and templates. mise clones it and runs mise bootstrap from the checkout:
mise bootstrap --from https://github.com/you/workstation.git
mise -E work bootstrap --from git@github.com:you/workstation.gitThe checkout goes to $MISE_DATA_DIR/bootstrap-repo, normally ~/.local/share/mise/bootstrap-repo. Use --from-dir <DIR> to choose another directory.
To check out a branch, tag, or commit instead of the default branch, add ?ref= to the URL. A git:: prefix is accepted but not needed:
mise bootstrap --from 'https://github.com/you/workstation.git?ref=v1'When the checkout already exists:
- Its
originmust be the URL you pass. mise uses the checkout as it is. --updatepulls new commits first, and accepts only a fast-forward.- With
?ref=,--updatelooks the ref up on the remote again. A branch is checked out and fast-forwarded, and a branch wins over a tag with the same name. A tag moves to the commit it now names. A branch or tag that no longer exists on the remote is an error.
--dry-run with no checkout yet prints the clone command and stops, because there is no configuration to preview until the checkout exists.
Global configuration (--adopt)
Use --adopt when the repository is your global mise config, with files such as config.toml, config.work.toml, conf.d/, and tasks/:
mise bootstrap --adopt you/mise-configOWNER/REPO expands to https://github.com/OWNER/REPO.git. HTTPS and SSH URLs and local paths work too. mise clones the repository's default branch into $MISE_CONFIG_DIR, normally ~/.config/mise, and runs bootstrap from it. The files stay in place, so every later mise command reads them as your global config. If you set $MISE_GLOBAL_CONFIG_FILE, mise clones into that file's directory and loads that file.
The destination must be missing, empty, or already a Git checkout whose origin is the repository you name. Move an existing ~/.config/mise aside before adopting into it. With an existing checkout, --update fast-forwards it before the bootstrap runs. The checkout is an ordinary Git repository: commit and pull in it as you would anywhere else.
Setup repository (--adopt)
A setup repository holds the history of your tracked dotfiles, shared with mise dot origin set. Adopting one restores your tracked files and runs bootstrap from the restored configuration:
mise bootstrap --adopt you/setupmise does the following:
- Fetches the repository's default branch into its own history store.
- Restores each tracked file to its path on this machine.
- Remembers the repository as the origin for later synchronization.
- Runs bootstrap from the restored mise configuration.
mise does not clone a setup repository into $MISE_CONFIG_DIR. If that directory is already a Git checkout, though, its origin must be the repository you adopt. Setup repositories always come from their latest commit, so --update only refreshes package metadata and [bootstrap.repos] in the bootstrap that follows.
Track the mise configuration and any template sources on the first machine, so bootstrap can recreate tools and services and render templates here. If a file on this machine differs from the shared version, adoption pauses before it writes anything or runs bootstrap, so you can decide each file. --dry-run shows the files it would write and those held for a decision. --replace-history discards unrelated local history while adopting. It does not resolve files that differ; add --take-remote-all to take the repository's version of each.
Set up a machine walks through adopting a setup repository, including files that already exist. For synchronization after that, see Sync across machines.
On other machines
To adopt a repository on another machine over SSH, see Remote hosts.