{"record":{"id":"2e6f83669f0a7bdf","repo":"jdx/mise","slug":"remote-bootstrap-failed-on-target-s","errorCode":null,"errorMessage":"remote bootstrap failed on {} target(s):\n  {}","messagePattern":"remote bootstrap failed on (.+?) target\\(s\\):\n  (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cli/bootstrap.rs","lineNumber":2393,"sourceCode":"            bail!(\n                \"remote bootstrap configuration is invalid for {} target(s):\\n  {}\",\n                configuration_errors.len(),\n                configuration_errors.join(\"\\n  \")\n            );\n        }\n        let mut failures = vec![];\n        let mut artifacts = system::remote::RemoteArtifactResolver::default();\n        for host in selected.values() {\n            if let Err(error) = system::remote::run(host, &options, &mut artifacts).await {\n                error!(\"remote bootstrap failed on {}: {error:#}\", host.name);\n                failures.push(format!(\"{}: {error:#}\", host.name));\n                if self.fail_fast {\n                    break;\n                }\n            }\n        }\n        if !failures.is_empty() {\n            bail!(\n                \"remote bootstrap failed on {} target(s):\\n  {}\",\n                failures.len(),\n                failures.join(\"\\n  \")\n            );\n        }\n        info!(\"remote bootstrap completed on {} target(s)\", selected.len());\n        Ok(())\n    }\n}\n\nfn select_remote_inventory(\n    inventory: &indexmap::IndexMap<String, system::remote::RemoteHost>,\n    targets: &[String],\n    all: bool,\n    tags: &[String],\n) -> Result<indexmap::IndexMap<String, system::remote::RemoteHost>> {\n    let mut selected = indexmap::IndexMap::new();\n    for target in targets {","sourceCodeStart":2375,"sourceCodeEnd":2411,"githubUrl":"https://github.com/jdx/mise/blob/9dcfcaa0dc8747a2577d3270b69bb9d8313b2807/src/cli/bootstrap.rs#L2375-L2411","documentation":"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.","triggerScenarios":"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.","commonSituations":"Fleet fan-outs where one node is down; first bootstrap on hosts without mise installed; stale known_hosts; rate-limited or proxied SSH.","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"],"exampleFix":"# before\nmise bootstrap remote --all\n# Error: remote bootstrap failed on 2 target(s): web1: ..., web2: ...\n\n# after (isolate, fix, re-run)\nssh deploy@web1            # fix connectivity / mise install\nmise bootstrap remote web1\nmise bootstrap remote --all","handlingStrategy":"retry","validationCode":"# bash: pre-flight SSH connectivity per host before the fan-out\nfor h in \"${HOSTS[@]}\"; do\n  ssh -o BatchMode=yes -o ConnectTimeout=5 \"$h\" true || { echo \"unreachable: $h\" >&2; exit 1; }\ndone","typeGuard":null,"tryCatchPattern":null,"preventionTips":["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"],"tags":["mise","bootstrap","remote","ssh","fan-out"],"backgroundTag":"remote-execution-failed","analyzedSha":"9dcfcaa0dc8747a2577d3270b69bb9d8313b2807","analyzedAt":"2026-08-17T14:28:50.624Z","schemaVersion":2},"datasetVersion":"2026-08-21T18:17:14.833Z"}