jdx/mise · error
remote host ' ' mise binary does not exist
Error message
remote host '{}' mise binary does not exist: {} What it means
The remote host's `mise_bin` override must point to an existing regular file locally; validate_with_source checks the filesystem and bails when the configured mise binary path does not exist. This prevents remote runs from failing later on a bad binary path.
Solutions
- Build or reinstall mise and point mise_bin at the real binary path (e.g. ~/.local/bin/mise).
- Fix the path in the remote host config to the existing binary.
- Remove mise_bin to use the default mise resolution on the host.
- Use `which mise` to find the installed binary path and copy it into config.
Example fix
// before mise_bin = "target/debug/mise" // after mise_bin = "/home/user/.local/bin/mise"
Defensive patterns
Strategy: validation
Validate before calling
const fs = require('fs');
function assertMiseBin(host) {
if (host.mise_bin && !fs.statSync(host.mise_bin).isFile()) {
throw new Error(`mise binary missing: ${host.mise_bin}`);
}
} Prevention
- Resolve mise_bin at config-generation time via `which mise` instead of hardcoding build paths.
- Avoid target/debug paths in durable config; they vanish on `cargo clean`.
- Install mise to a stable location (~/.local/bin/mise) on machines used for remote runs.
When it happens
Trigger: A remote host entry sets `mise_bin = "..."` and the path is missing or is a directory; validate() or apply_overrides() call validate_with_source and bail.
Common situations: Custom-built mise binary moved or deleted after `cargo build` cleaned target/; pointing at target/debug/mise on a machine where it was never built; path typo; switching machines or CI runners without rebuilding.
Understand the failure class
Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.
Related errors
- remote host ' ' identity file does not exist
- remote host ' ' port must be greater than zero
- {error:#}
- invalid remote global configuration path
- invalid remote
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/5a9543fc69b4a814.
Report an issue: GitHub.
Appendix: source
Thrown at src/system/remote.rs:354
for link in &self.copy_link {
validate_copy_link(&self.source, link).wrap_err_with(|| {
format!("remote host '{}' has invalid copy_link", self.name)
})?;
}
}
if let Some(identity) = &self.identity_file
&& !identity.is_file()
{
bail!(
"remote host '{}' identity file does not exist: {}",
self.name,
identity.display()
);
}
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
);View on GitHub (pinned to 533346cc37)