jdx/mise · error

select a remote target by name, --tag, or --all (configured:

Error message

select a remote target by name, --tag, or --all (configured: {})

What it means

The remote inventory IS non-empty (hosts configured under [bootstrap.remote.hosts]) but the selection - positional target names, --host, --tag, --all - resolved to zero hosts (src/cli/bootstrap.rs:2341). mise refuses an empty fan-out and prints the configured host names to choose from.

Source

Thrown at src/cli/bootstrap.rs:2341

        let config = Config::get().await?;
        let config_excludes = system::remote::excludes_from_config(&config);
        let inventory = system::remote::hosts_from_config(&config, &config_excludes)?;
        let mut selected = select_remote_inventory(&inventory, &self.targets, self.all, &self.tag)?;
        let ad_hoc_source = self.source.clone().unwrap_or(std::env::current_dir()?);
        for destination in &self.host {
            let host =
                system::remote::ad_hoc_host(destination, ad_hoc_source.clone(), &config_excludes)?;
            if selected.insert(host.name.clone(), host).is_some() {
                bail!("remote target '{destination}' was selected more than once");
            }
        }
        if selected.is_empty() {
            if inventory.is_empty() {
                bail!(
                    "no remote targets configured; pass --host [user@]host or add [bootstrap.remote.hosts]"
                );
            }
            bail!(
                "select a remote target by name, --tag, or --all (configured: {})",
                inventory.keys().cloned().collect::<Vec<_>>().join(", ")
            );
        }

        let overrides = system::remote::RemoteOverrides {
            source: self.source,
            port: self.port,
            identity_file: self.identity_file,
            exclude: self.exclude,
            ssh_options: self.ssh_option,
            mise_bin: self.mise_bin,
            remote_mise: self.remote_mise,
            bootstrap_command: self.bootstrap_command,
        };
        let options = system::remote::RemoteRunOptions {
            dry_run: self.dry_run,
            yes: self.yes,

View on GitHub (pinned to 9dcfcaa0dc)

Solutions

  1. Pass one of the names printed in the error: 'mise bootstrap remote <name>'
  2. Use --tag <value> matching a host's tags, or --all to take the whole inventory
  3. Fix the host's tags in [bootstrap.remote.hosts.<name>] if the tag value is wrong

Example fix

# before
mise bootstrap remote            # hosts exist, none selected
# Error: select a remote target by name, --tag, or --all (configured: web1, web2)

# after
mise bootstrap remote web1   # or: mise bootstrap remote --tag prod   or: --all
Defensive patterns

Strategy: validation

Validate before calling

# bash: verify the tag/target appears in config before fan-out
if [ -n "$TAG" ] && ! grep -F "$TAG" mise.toml >/dev/null 2>&1; then
  echo "no host tagged '$TAG' in mise.toml" >&2; exit 1
fi

Prevention

When it happens

Trigger: 'mise bootstrap remote' with hosts configured but no selector given; --tag value matching no host's tags; a misspelled positional target name; empty --targets value.

Common situations: Expecting a default host to be implied; renamed hosts while scripts still pass old names; tags defined on only some hosts.

Related errors


AI-assisted analysis of jdx/mise@9dcfcaa0dc (2026-08-17). Data as JSON: /api/errors/085d130777fc9a60. Report an issue: GitHub.