jdx/mise · error
remote bootstrap failed on {} target(s): {}
Error message
remote bootstrap failed on {} target(s):
{} What it means
The execution-phase aggregate (src/cli/bootstrap.rs:2393): system::remote::run() failed for one or more hosts, and (without --fail-fast) every host was attempted with each 'name: error chain' collected into one bail. Root causes are connectivity/auth (SSH), staging artifact copy failures, or the remote mise binary missing or erroring.
Source
Thrown at src/cli/bootstrap.rs:2393
bail!(
"remote bootstrap configuration is invalid for {} target(s):\n {}",
configuration_errors.len(),
configuration_errors.join("\n ")
);
}
let mut failures = vec![];
let mut artifacts = system::remote::RemoteArtifactResolver::default();
for host in selected.values() {
if let Err(error) = system::remote::run(host, &options, &mut artifacts).await {
error!("remote bootstrap failed on {}: {error:#}", host.name);
failures.push(format!("{}: {error:#}", host.name));
if self.fail_fast {
break;
}
}
}
if !failures.is_empty() {
bail!(
"remote bootstrap failed on {} target(s):\n {}",
failures.len(),
failures.join("\n ")
);
}
info!("remote bootstrap completed on {} target(s)", selected.len());
Ok(())
}
}
fn select_remote_inventory(
inventory: &indexmap::IndexMap<String, system::remote::RemoteHost>,
targets: &[String],
all: bool,
tags: &[String],
) -> Result<indexmap::IndexMap<String, system::remote::RemoteHost>> {
let mut selected = indexmap::IndexMap::new();
for target in targets {View on GitHub (pinned to 9dcfcaa0dc)
Solutions
- Reproduce on the first failing host: ssh -p <port> user@host - fix connectivity/auth before anything else
- Verify mise remotely: ssh user@host mise --version; install it or pass --mise-bin /path/to/mise
- Re-run only the failed subset (name or --tag) once fixed
- Add --fail-fast when you want the first error immediately instead of a full report
Example fix
# before mise bootstrap remote --all # Error: remote bootstrap failed on 2 target(s): web1: ..., web2: ... # after (isolate, fix, re-run) ssh deploy@web1 # fix connectivity / mise install mise bootstrap remote web1 mise bootstrap remote --all
Defensive patterns
Strategy: retry
Validate before calling
# bash: pre-flight SSH connectivity per host before the fan-out
for h in "${HOSTS[@]}"; do
ssh -o BatchMode=yes -o ConnectTimeout=5 "$h" true || { echo "unreachable: $h" >&2; exit 1; }
done Prevention
- Pre-flight SSH connectivity per host before bootstrap fan-out
- Install mise on hosts or set --mise-bin centrally
- On failure, re-run only the failed subset (name or --tag) instead of the whole fleet
- Use --fail-fast during debugging to surface the first error immediately
When it happens
Trigger: Unreachable or firewalled hosts; SSH key rejection or wrong user; wrong --port; remote host missing mise (or --mise-bin path wrong); remote command exiting non-zero; disk full in the remote staging dir.
Common situations: Fleet fan-outs where one node is down; first bootstrap on hosts without mise installed; stale known_hosts; rate-limited or proxied SSH.
Related errors
- --connect-timeout must be greater than zero
- remote mise candidate discovery returned a truncated respons
- remote target '{destination}' was selected more than once
- no remote targets configured; pass --host [user@]host or add
- select a remote target by name, --tag, or --all (configured:
AI-assisted analysis of jdx/mise@9dcfcaa0dc (2026-08-17).
Data as JSON: /api/errors/2e6f83669f0a7bdf.
Report an issue: GitHub.