BoundaryML/baml · error

Version check failed

Error message

Version check failed

What it means

During `baml deploy`, the CLI runs a version check over all generated client targets (e.g. OpenAPI outputs). If any generator reports a version problem, deployment aborts with this top-level error and the individual messages attached as context.

Solutions

  1. Read the contextual error lines above/below this message to identify the failing generator
  2. Upgrade the BAML CLI and all baml runtime packages to the same version (e.g. `pip install -U baml-py` / `npm i @boundaryml/baml`)
  3. Regenerate clients (`baml generate`) after upgrading, then redeploy
  4. Pin matching versions in baml.config.json and your lockfile

Example fix

// before (mismatch)
"pin": "0.80.0" while CLI is 0.85.0
// after
baml-cli version check && pip install "baml-py==<cli-version>" && baml generate
Defensive patterns

Strategy: try-catch

Validate before calling

// before deploying
const cliVer = execSync('baml --version').toString().trim();
const runtimeVer = require('@boundaryml/baml/package.json').version;
if (cliVer !== runtimeVer) console.warn('BAML CLI/runtime version mismatch');

Try / catch

try {
  await deploy();
} catch (e) {
  if (String(e).includes('Version check failed')) {
    // inspect chained contexts and realign versions
  }
}

Prevention

When it happens

Trigger: Running deploy when one or more version_check_errors were collected while regenerating/validating client artifacts, e.g. a generator emitting code requiring a newer baml runtime than installed, or a mismatched generator version in baml.config.

Common situations: BAML CLI and installed runtime packages out of sync after upgrading only one side; pinning an old generator version in baml.config.json; CI cache with stale generated clients.

Understand the failure class

Background: "API error: {status}" and "HTTP 401/403/404/429/5xx" errors: non-2xx HTTP responses explained — this error's family across 27 libraries.

Related errors


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

Appendix: source

Thrown at engine/cli/src/deploy.rs:101

impl Deployer {
    async fn run_async(&self) -> Result<()> {
        let cloud_projects = self.runtime.cloud_projects();

        let version_check_errors = cloud_projects
            .iter()
            .filter_map(|cloud_project| {
                generators_lib::version_check::check_version(
                    &cloud_project.version,
                    env!("CARGO_PKG_VERSION"),
                    generators_lib::version_check::GeneratorType::CLI,
                    generators_lib::version_check::VersionCheckMode::Strict,
                    baml_types::GeneratorOutputType::OpenApi,
                    false,
                )
            })
            .collect::<Vec<_>>();
        if !version_check_errors.is_empty() {
            let mut err = anyhow::anyhow!("Version check failed");
            for error in version_check_errors.iter() {
                err = err.context(error.msg());
            }
            return Err(err);
        }

        if cloud_projects.is_empty() {
            self.deploy_new_project().await?;
        } else {
            for cloud_project in cloud_projects {
                self.deploy_project_no_progress_spinner(
                    &cloud_project.project_fqn,
                    IndexMap::new(),
                )
                .with_progress_spinner(
                    format!("Deploying to {}", cloud_project.project_fqn),
                    |_| "done!".to_string(),
                    "something went wrong.",

View on GitHub (pinned to bd85ce9dee)