tinyhumansai/openhuman · error · anyhow::Error

people unavailable: memory driver does not support the peopl

Error message

people unavailable: memory driver does not support the people family

What it means

The bound driver's as_people() is None — it does not implement the people family, so every people_* tool refuses up front. A driver capability mismatch (commonly the null driver after a failed module load).

Source

Thrown at src/openhuman/memory/tools/people.rs:33

use chrono::Utc;
use serde_json::json;

use crate::openhuman::memory::api::provider::{MemoryProvider, PersonHandle, PersonInteraction};
use crate::openhuman::memory::guard::MemoryGuard;
use crate::openhuman::memory::ops::guard::active_memory_guard;
use crate::openhuman::memory::people::rpc;
use crate::openhuman::tools::traits::{PermissionLevel, Tool, ToolResult};

/// The guarded driver for this call, checked to serve the people family.
///
/// Returns the guard rather than the family handle because the accessor
/// borrows from it.
async fn people_guard() -> anyhow::Result<std::sync::Arc<MemoryGuard>> {
    let guard = active_memory_guard()
        .await
        .map_err(|e| anyhow::anyhow!("people unavailable: {e}"))?;
    if guard.as_people().is_none() {
        return Err(anyhow::anyhow!(
            "people unavailable: memory driver does not support the people family"
        ));
    }
    Ok(guard)
}

fn read_required_str(args: &serde_json::Value, key: &str) -> anyhow::Result<String> {
    args.get(key)
        .and_then(serde_json::Value::as_str)
        .map(str::trim)
        .filter(|s| !s.is_empty())
        .map(str::to_string)
        .ok_or_else(|| anyhow::anyhow!("missing required string argument `{key}`"))
}

/// Read `person_id` as the opaque token the contract defines it to be.
///
/// It is not parsed into a `Uuid` here: `PersonRef` is opaque by contract and

View on GitHub (pinned to 7491200858)

Solutions

  1. Use a driver implementing MemoryPeople
  2. Diagnose why a people-less driver got bound
  3. Skip people tools on this backend
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at src/openhuman/memory/tools/people.rs:33 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/e6c2fffe5cbb5a35. Report an issue: GitHub.