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
- Verify the exact function name with `openhuman <namespace> --help`
- Report it as a bug if the name is listed — the controller registry and schema list have drifted
- 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.