BoundaryML/baml · error

{selector} is a local path; there is nothing to install. Run

Error message

{selector} is a local path; there is nothing to install.
Run: baml toolchain use {selector}

What it means

install_toolchain refuses a selector that looks like a local path (is_path_selector), because there is nothing to download or install for a local build. It directs the user to activate the path directly with `baml toolchain use`. This prevents nonsensical installs of filesystem paths.

Source

Thrown at baml_language/crates/baml/src/main.rs:1175

            !is_channel(selector)
                || cache_path
                    .metadata()
                    .and_then(|metadata| metadata.modified())
                    .ok()
                    .and_then(|modified| SystemTime::now().duration_since(modified).ok())
                    .is_some_and(|age| age <= CHANNEL_CACHE_TTL)
        }
    }
}

fn install_toolchain(
    selector: &str,
    activate_channel: bool,
    override_url: Option<&str>,
    force: bool,
) -> Result<()> {
    if is_path_selector(selector) {
        return Err(anyhow!(
            "{selector} is a local path; there is nothing to install.\nRun: baml toolchain use {selector}"
        ));
    }
    install_toolchain_with_policy(
        selector,
        activate_channel,
        override_url,
        force,
        FetchPolicy::CacheAllowed,
    )
}

fn install_toolchain_with_policy(
    selector: &str,
    activate_channel: bool,
    override_url: Option<&str>,
    force: bool,
    policy: FetchPolicy,

View on GitHub (pinned to bd85ce9dee)

Solutions

  1. Use the activation command instead: `baml toolchain use <path>`.
  2. If you meant to install a released version, pass a version or channel name (e.g. canary, nightly) instead of a path.

Example fix

// before
baml toolchain install ./target/release/baml
// after
baml toolchain use ./target/release/baml
Defensive patterns

Strategy: validation

Validate before calling

if (selector.startsWith('/') || selector.startsWith('./') || selector.includes('/')) {
  // it's a path selector: use `baml toolchain use <selector>` instead of install
}

Prevention

When it happens

Trigger: Running `baml toolchain install <selector>` (with activate_channel / override_url / force variants) where the selector matches the path-selector syntax (e.g. starts with ./, /, or contains path separators).

Common situations: Copy-pasting a local build path into `install` instead of `use`; scripting around local dev builds of the toolchain; misunderstanding that path selectors bypass the registry entirely.

Understand the failure class

Background: "Unknown argument", "Invalid value", and "must be one of": invalid CLI argument errors explained — this error's family across 35 libraries.

Related errors


AI-assisted analysis of BoundaryML/baml@bd85ce9dee (2026-09-12). Data as JSON: /api/errors/c9bcdcf0177eacfc. Report an issue: GitHub.