mise bootstrap remote
- Usage:
mise bootstrap remote [FLAGS] [TARGET]… - Effect: destructive — may delete or irreversibly overwrite
- Source code:
src/cli/bootstrap.rs
Bootstrap one or more machines over SSH
Packs a local project directory, copies it to each target, stages mise there, and runs mise bootstrap. The directory is --source. Without it, an inventory host uses its own source, then the one in [bootstrap.remote], then the current directory; a --host target uses the current directory. Pick targets by name, --tag, or --all from [bootstrap.remote.hosts], or give any SSH destination with --host.
Targets need a POSIX shell plus tar, mktemp, cksum, and uname; Windows targets are not supported. --dry-run still connects, uploads, and inspects each target, but changes nothing there. With --adopt, each target adopts the repository as mise bootstrap --adopt does, instead of receiving a project directory.
The --github-relay-* flags let targets read private GitHub repositories through this machine's credentials for the length of the run, without copying a token to them. See https://mise.jdx.dev/bootstrap/github-relay.html.
Arguments
[TARGET]…— Inventory host names from[bootstrap.remote.hosts]
Flags
--adopt <GIT_URL|OWNER/REPO>— Adopt global configuration or shared dotfile history on each target--all— Select every inventory host--bootstrap-command <COMMAND>— Shell command, run on each target, that installs mise and puts it on PATH--connect-timeout <SECONDS>— SSH connection timeout in secondsDefault:
10--copy-link <PATH>— Copy the target of this source-relative symbolic link instead of the link; repeat for more--copy-links— Copy the targets of every symbolic link in the source instead of the links--exclude <PATTERN>— Another pattern to leave out of the archive; repeat for more--fail-fast— Stop after the first failed target--force-dotfiles— Overwrite files on each target that conflict with whole-file dotfile entries--host <[USER@]HOST>— SSH destination that is not in the inventory ([user@]host); repeat for more-i --identity-file <PATH>— SSH identity file, overriding the inventory and SSH config-n --dry-run— Show what would change on each target without changing itIt still connects to each target, uploads the project, stages mise, and inspects the target.
--install-mise[=PATH]— Install the provisioned mise on each host instead of only staging itDefaults to
~/.local/bin/mise; pass--install-mise=<PATH>for another path.--keep-staging— Keep the remote staging directory for debugging--mise-bin <PATH>— Upload this local mise executable, for platforms without an official release binary--no-install-mise— Do not install mise on the host, even when the selected hosts configure it--only <PART>— Run only these parts on each targetRepeat 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--port <PORT>— SSH port, overriding the inventory and SSH config--prompt-secrets— Prompt securely for missing secret inputs on the remote host--remote-env <ENV>— Config environments to load on each target; repeat or separate with commas (for example, ci,dotfiles)--remote-mise <COMMAND>— Existing mise executable name or path; relative paths use the staged project--skip <PART>— Skip these parts on each targetRepeat 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--source <DIR>— Local directory to archive and send to each target--ssh-option <OPTION>— OpenSSH-ooption; repeat for multiple options--tag <TAG>— Select configured hosts with this tag; repeat to match any tag--update— Refresh package metadata and update repositories on each target-y --yes— Skip confirmation prompts on each target--github-relay-read-only— Borrow read-only GitHub access for this run (Linux and macOS only)Needs exactly one of
--github-relay-repoor--github-relay-all-repos.--github-relay-repo <OWNER/REPO>— Repository the targets may read through the relay; repeat for more (needs--github-relay-read-only)--github-relay-all-repos— Let targets read every repository your local credentials can read (needs--github-relay-read-only)--github-relay-log-requests— Log sanitized relay requests on local stderr (needs--github-relay-read-only)--github-relay-no-log-requests— Turn off request logging, overriding thegithub_relaysettings (needs--github-relay-read-only)--github-relay-log-format <FORMAT>— Relay log and summary format,textorjsonl(needs--github-relay-read-only)--github-relay-max-duration <DURATION>— End borrowed access after a duration such as1h;0slasts the whole run (needs--github-relay-read-only)-h --help— Print help
Examples
Preview a run on a host that is not in the inventory
mise bootstrap remote --host devbox --dry-runBootstrap one inventory host
mise bootstrap remote cacheBootstrap every inventory host tagged canary, without prompts
mise bootstrap remote --tag canary --yesBootstrap every inventory host and stop at the first failure
mise bootstrap remote --all --fail-fastLeave mise installed on the host after the run
mise bootstrap remote --host [email protected] -i ~/.ssh/mise-cache --install-miseLet the host read one private GitHub repository during the run
mise bootstrap remote --host devbox --github-relay-read-only --github-relay-repo example/setup