tinyhumansai/openhuman · error
memory driver `{driver_id}` is not the embedded TinyCortex d
Error message
memory driver `{driver_id}` is not the embedded TinyCortex driver, so `{invocation}` is unavailable: it operates on the local embedded store directly, and this configuration bound a different driver. Run `openhuman subsystems` to see the bound driver, or change `[subsystems.memory] driver` in your config. What it means
The legacy-client gate rejected an invocation that operates directly on the local embedded memory store: it is only valid when the bound driver's class is Embedded (TinyCortex), and the current [subsystems.memory] binding resolved to a different class. Like the capability gate, it defaults OPEN — an unresolvable binding never reaches this rejection; it fires only after a real non-embedded driver answered. This guards legacy commands that assume the embedded store exists locally from silently acting on a machine whose memory is served elsewhere.
Source
Thrown at src/core/cli_capability.rs:214
capability_verdict(&driver_id, advertised, Some(required), invocation)
}
/// The pure verdict for the legacy-client gate: does the bound driver class
/// permit commands that operate on the embedded store directly?
///
/// Mirrors [`capability_verdict`]'s default-OPEN posture — `None` from the
/// caller means "no legacy gate applies", and an unresolvable binding has
/// already been defaulted-OPEN upstream by the caller skipping this entirely.
pub fn legacy_client_verdict(driver_id: &str, class: DriverClass, invocation: &str) -> Result<()> {
if class == DriverClass::Embedded {
return Ok(());
}
log::warn!(
"[cli][legacy-client-gate] rejected invocation='{invocation}' driver='{driver_id}' \
class={} — not the embedded engine",
class.as_str()
);
anyhow::bail!(legacy_client_unavailable_message(driver_id, invocation))
}
#[cfg(test)]
#[path = "cli_capability_tests.rs"]
mod tests;
View on GitHub (pinned to a221052e0d)
Solutions
- Run `openhuman subsystems` to confirm the bound driver and its class
- Change [subsystems.memory] driver back to the embedded TinyCortex driver for embedded-only commands
- Or replace the legacy command with the driver-appropriate equivalent for the bound driver
Example fix
# before # config.toml: [subsystems.memory] driver = "remote" openhuman memory <legacy-embedded-command> # after # config.toml: [subsystems.memory] driver = "embedded" openhuman memory <legacy-embedded-command>
Defensive patterns
Strategy: validation
Validate before calling
# bash: confirm the embedded driver is bound before legacy embedded-store commands
openhuman subsystems 2>/dev/null | grep -q embedded \
|| { echo "legacy command needs the embedded memory driver — change [subsystems.memory] driver" >&2; exit 2; }
openhuman memory "$@" Try / catch
if ! out=$(openhuman memory "$fn" 2>&1); then
case "$out" in
*"not the embedded TinyCortex driver"*) echo "'$fn' requires the embedded driver; current binding is non-embedded" >&2 ;;
*) printf '%s\n' "$out" >&2 ;;
esac
exit 1
fi Prevention
- Treat legacy embedded-store commands as embedded-driver-only and gate them in wrappers on the subsystems output
- When migrating [subsystems.memory] driver, inventory existing scripts for embedded-only commands first
- The rejection only fires when a non-embedded driver actually resolved — an unreadable config skips the gate (default-OPEN), so verify bindings explicitly
When it happens
Trigger: [subsystems.memory] driver set to a remote/non-embedded driver, then running a legacy embedded-store CLI command (one whose only implementation touches the local store directly).
Common situations: Old scripts kept running after the memory driver was reconfigured; a shared config rolled out to machines whose workflows still include embedded-only maintenance commands; evaluating a remote driver while testing with legacy tooling.
Related errors
- memory driver `{driver_id}` does not advertise the `{cap}` c
- OpenHuman could not reach its local runtime. Quit and reopen
- audio blob is empty
- voice_not_compiled
- audio blob is empty
AI-assisted analysis of tinyhumansai/openhuman@a221052e0d (2026-08-16).
Data as JSON: /api/errors/228af153f7d8c79f.
Report an issue: GitHub.