tinyhumansai/openhuman · error

{} worker protocol mismatch: expected {}, got {:?}

Error message

{} worker protocol mismatch: expected {}, got {:?}

What it means

The worker's ready line advertises a protocol version other than PROTOCOL_VERSION — the supervisor and the worker executable were built from mismatched code (stale installed worker, partial upgrade). Wire framing cannot be trusted after this point.

Source

Thrown at src/openhuman/runtime/pool/worker.rs:191

                "{} worker exited before readiness handshake",
                launch.lang.id()
            ),
            Ok(Err(error)) => {
                return Err(error).context("reading worker handshake");
            }
            Err(_) => bail!("{} worker readiness handshake timed out", launch.lang.id()),
        };
        let ready: PoolReadyLine = serde_json::from_str(&ready_line)
            .with_context(|| format!("parsing worker ready line: {ready_line}"))?;
        if !ready.ready {
            bail!(
                "{} worker failed to start: {}",
                launch.lang.id(),
                ready.error.unwrap_or_else(|| "unknown".to_string())
            );
        }
        if ready.protocol != Some(PROTOCOL_VERSION) {
            bail!(
                "{} worker protocol mismatch: expected {}, got {:?}",
                launch.lang.id(),
                PROTOCOL_VERSION,
                ready.protocol
            );
        }
        if ready.protocol_token != expected_token {
            bail!("{} worker protocol authentication failed", launch.lang.id());
        }
        tracing::info!(lang = launch.lang.id(), "[runtime_pool] worker ready");

        Ok(Self {
            launch: launch.clone(),
            _child: child,
            stdin,
            responses: lines,
            jobs_done: 0,
            last_used: Instant::now(),

View on GitHub (pinned to 7491200858)

Solutions

  1. Re-provision / rebuild the worker runtime so both sides come from the same build
  2. Clear stale cached worker scripts and relaunch the pool
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/openhuman/runtime/pool/worker.rs:191 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/bade0df715454841. Report an issue: GitHub.