tinyhumansai/openhuman · error

memory unavailable: {e}

Error message

memory unavailable: {e}

What it means

Generic guard from the learning tools' get_cache(): acquiring the profile facet cache through the bound memory driver failed (driver unavailable, module not loaded, or capability unsupported). Every learning_* agent tool that needs facets fails with this wrapped error before doing any work.

Source

Thrown at src/openhuman/agent/learning/tools.rs:36

use std::time::{SystemTime, UNIX_EPOCH};

use async_trait::async_trait;
use serde_json::json;

use crate::openhuman::agent::learning::cache::FacetCache;
use crate::openhuman::agent::learning::stability_detector::StabilityDetector;
use crate::openhuman::config::rpc as config_rpc;
use crate::openhuman::memory::api::provider::{FacetState, ProfileFacet, UserState};
use crate::openhuman::tools::traits::{PermissionLevel, Tool, ToolResult};

/// Acquire the profile facet cache, mirroring `learning::schemas::get_cache`.
///
/// Goes through the bound driver: facets moved behind the memory module, so
/// there is no process-global client to ask any more.
async fn get_cache() -> anyhow::Result<FacetCache> {
    let guard = crate::openhuman::memory::ops::guard::active_memory_guard()
        .await
        .map_err(|e| anyhow::anyhow!("memory unavailable: {e}"))?;
    Ok(FacetCache::new(guard))
}

/// Compose the full facet key from a class string + key suffix.
fn full_key(class_str: &str, key_suffix: &str) -> String {
    format!("{class_str}/{key_suffix}")
}

fn facet_to_json(f: &ProfileFacet) -> serde_json::Value {
    serde_json::to_value(f).unwrap_or(serde_json::Value::Null)
}

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)

View on GitHub (pinned to 7491200858)

Solutions

  1. Check memory module/driver health and that profile facets are supported by the bound driver
  2. Retry after the memory subsystem finishes initialising
  3. Return a clean 'learning unavailable' tool error to the model instead of retrying in-turn
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at src/openhuman/agent/learning/tools.rs:36 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/29ab80e3693939c6. Report an issue: GitHub.