tinyhumansai/openhuman · error

node runtime is disabled (set node.enabled = true to use ski

Error message

node runtime is disabled (set node.enabled = true to use skills that require node/npm)

What it means

Raised by NodeBootstrap::resolve when the managed Node.js toolchain is switched off in config: try_cached/probe_installed found nothing (they returned None), so resolve() is the terminal fallback that fails. It is a config gate, not an environment probe — nothing was attempted on disk.

Source

Thrown at src/openhuman/runtime/node/bootstrap.rs:158

        None
    }

    /// Resolve the Node.js toolchain, downloading + extracting a managed
    /// distribution if necessary. Idempotent: the first successful call
    /// memoises the result; later calls return it without further I/O.
    pub async fn resolve(&self) -> Result<ResolvedNode> {
        let mut guard = self.cached.lock().await;
        if let Some(existing) = guard.as_ref() {
            tracing::debug!(
                version = %existing.version,
                source = ?existing.source,
                "[node_runtime::bootstrap] returning cached ResolvedNode"
            );
            return Ok(existing.clone());
        }

        if !self.config.enabled {
            bail!("node runtime is disabled (set node.enabled = true to use skills that require node/npm)");
        }

        if self.config.prefer_system {
            if let Some(system) = detect_system_node(&self.config.version) {
                let resolved = resolve_from_system(system)?;
                *guard = Some(resolved.clone());
                return Ok(resolved);
            }
        }

        let managed = self.install_managed().await?;
        *guard = Some(managed.clone());
        Ok(managed)
    }

    /// Compute the cache root for managed Node.js installs.
    ///
    /// Resolution order (first hit wins):

View on GitHub (pinned to 7491200858)

Solutions

  1. Set node.enabled = true in config.toml and retry the skill/turn that needs node or npm
  2. Avoid skills that require the managed Node toolchain if it is intentionally disabled
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/openhuman/runtime/node/bootstrap.rs:158 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/724d90dd317d6a51. Report an issue: GitHub.