tinyhumansai/openhuman · error

unregistered controller '{namespace}.{function}'

Error message

unregistered controller '{namespace}.{function}'

What it means

Internal consistency guard after capability checking: the schema lookup for the requested namespace.function found no matching ControllerSchema even though capability resolution allowed the call. Indicates a controller registered in the capability map but absent from the grouped schema list — a build/registration inconsistency rather than a user typo.

Source

Thrown at src/core/cli.rs:596

        all::capability_for_parts(namespace, function).flatten(),
        &format!("openhuman {namespace} {function}"),
    )?;

    let Some(schema) = schemas.iter().find(|s| s.function == function).cloned() else {
        return Err(anyhow::anyhow!(
            "unknown function '{namespace} {function}'. Run `openhuman {namespace} --help`."
        ));
    };

    if args.len() > 1 && is_help(&args[1]) {
        print_function_help(namespace, &schema);
        return Ok(());
    }

    // Generic parameter parsing and validation based on schema.
    let params = parse_function_params(&schema, &args[1..]).map_err(anyhow::Error::msg)?;
    let method = all::rpc_method_from_parts(namespace, function)
        .ok_or_else(|| anyhow::anyhow!("unregistered controller '{namespace}.{function}'"))?;

    // Same as the explicit `call` path above — any registered controller may
    // ultimately drive an orchestrator turn.
    let rt = tokio::runtime::Builder::new_multi_thread()
        .enable_all()
        .thread_stack_size(crate::core::runtime::AGENT_WORKER_STACK_BYTES)
        .max_blocking_threads(crate::core::runtime::MAX_BLOCKING_THREADS)
        .build()?;
    let value = rt
        .block_on(async { invoke_method(default_state(), &method, Value::Object(params)).await })
        .map_err(anyhow::Error::msg)?;

    println!("{}", serde_json::to_string_pretty(&value)?);
    Ok(())
}

/// Parses command-line arguments into a JSON map based on a function's schema.
///

View on GitHub (pinned to 7491200858)

Solutions

  1. Verify the exact function name with `openhuman <namespace> --help`
  2. Report it as a bug if the name is listed — the controller registry and schema list have drifted
  3. Try the equivalent RPC call over the HTTP transport as a workaround
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/core/cli.rs:596 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/7a04c3a019655868. Report an issue: GitHub.