jdx/mise · error
remote host ' ' must set at most one of mise_bin…
Error message
remote host '{}' must set at most one of mise_bin, remote_mise, or bootstrap_command What it means
A remote host may specify at most one way to obtain mise on the remote machine: a local mise_bin, a remote_mise path already on the host, or a bootstrap_command. validate_with_source counts how many of these are configured and bails when more than one is set, because the provisioning strategies conflict.
Solutions
- Pick one provisioning strategy and delete the other fields from the host entry.
- If mise already exists on the host, keep only remote_mise and remove mise_bin/bootstrap_command.
- If you want to upload a local binary, keep only mise_bin.
- If you need custom setup steps, keep only bootstrap_command.
Example fix
// before [[remote_host]] name = "builder" remote_mise = "/usr/local/bin/mise" bootstrap_command = "curl https://mise.run | sh" // after [[remote_host]] name = "builder" remote_mise = "/usr/local/bin/mise"
Defensive patterns
Strategy: validation
Validate before calling
function assertSingleStrategy(host) {
const set = ['mise_bin', 'remote_mise', 'bootstrap_command'].filter(k => host[k] != null);
if (set.length > 1) throw new Error(`remote host '${host.name}' sets multiple provisioning strategies: ${set}`);
} Prevention
- Standardize on one provisioning strategy across all host entries.
- Review merged config diffs for duplicated provisioning fields.
- Document the chosen strategy (e.g. remote_mise only) in team config guidelines.
When it happens
Trigger: A remote host entry sets two or more of mise_bin, remote_mise, bootstrap_command simultaneously; validate() or apply_overrides() detect provisioning_strategies > 1 and bail.
Common situations: Merging host config snippets from different setups; adding remote_mise on top of an existing bootstrap_command while iterating; copy-pasting a full example block that sets several fields.
Related errors
- remote host ' ' cannot combine install_mise with…
- remote host ' ' bootstrap command contains NUL
- remote host ' ' port must be greater than zero
- remote mise environment cannot contain a comma
- backend min_version requires version_order = "semver"
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/1d0a30c613685878.
Report an issue: GitHub.
Appendix: source
Thrown at src/system/remote.rs:369
if let Some(binary) = &self.mise_bin
&& !binary.is_file()
{
bail!(
"remote host '{}' mise binary does not exist: {}",
self.name,
binary.display()
);
}
let provisioning_strategies = [
self.mise_bin.is_some(),
self.remote_mise.is_some(),
self.bootstrap_command.is_some(),
]
.into_iter()
.filter(|configured| *configured)
.count();
if provisioning_strategies > 1 {
bail!(
"remote host '{}' must set at most one of mise_bin, remote_mise, or bootstrap_command",
self.name
);
}
if let Some(install_mise) = &self.install_mise {
if self.remote_mise.is_some() || self.bootstrap_command.is_some() {
bail!(
"remote host '{}' cannot combine install_mise with remote_mise or bootstrap_command, which already provide mise on the host",
self.name
);
}
validate_install_mise_path(install_mise).wrap_err_with(|| {
format!("remote host '{}' has an invalid install_mise", self.name)
})?;
}
for option in &self.ssh_options {
validate_value("SSH option", option)?;
}View on GitHub (pinned to 533346cc37)