tinyhumansai/openhuman · error
OpenClaw workspace not found at {}. Provide a valid source w
Error message
OpenClaw workspace not found at {}. Provide a valid source workspace. What it means
`migrate_openclaw_memory` resolves the source workspace — the explicit `source_workspace` argument, else the default `~/.openclaw/workspace` — and refuses to run when that path does not exist. The importer will not fabricate an empty migration report from a missing source; the message echoes the resolved path so you can see which location was checked.
Source
Thrown at src/openhuman/config/migration_helpers/core.rs:44
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MigrationReport {
pub source_workspace: PathBuf,
pub target_workspace: PathBuf,
pub dry_run: bool,
pub stats: MigrationStats,
pub warnings: Vec<String>,
}
pub async fn migrate_openclaw_memory(
config: &Config,
source_workspace: Option<PathBuf>,
dry_run: bool,
) -> Result<MigrationReport> {
let source_workspace = resolve_openclaw_workspace(source_workspace)?;
if !source_workspace.exists() {
bail!(
"OpenClaw workspace not found at {}. Provide a valid source workspace.",
source_workspace.display()
);
}
if paths_equal(&source_workspace, &config.workspace_dir) {
bail!("Source workspace matches current OpenHuman workspace; refusing self-migration");
}
let mut stats = MigrationStats::default();
let entries = collect_source_entries(&source_workspace, &mut stats)?;
let mut warnings = Vec::new();
if entries.is_empty() {
warnings.push(format!(
"No importable memory found in {}",
source_workspace.display()
));View on GitHub (pinned to 7491200858)
Solutions
- Pass the real source workspace path explicitly to the migration call.
- Restore or mount the OpenClaw data at `~/.openclaw/workspace` (the default resolution) and retry.
- Check the path exists before invoking; if OpenClaw was never installed, skip this migration entirely.
Example fix
// before
let report = migrate_openclaw_memory(&config, None, false).await?;
// after — explicit, verified source
let src = PathBuf::from("/data/openclaw-backup/workspace");
if !src.is_dir() { anyhow::bail!("no OpenClaw data at {}", src.display()); }
let report = migrate_openclaw_memory(&config, Some(src), false).await?; Defensive patterns
Strategy: validation
Validate before calling
let src = source_path.unwrap_or_else(|| home.join(".openclaw").join("workspace"));
if !src.is_dir() {
// OpenClaw not present on this machine — skip the migration instead of calling it
return Ok(None);
}
let report = migrate_openclaw_memory(&config, Some(src), dry_run).await?; Prevention
- Check the source path exists (and is a directory) before invoking the migration
- Pass explicit source paths in automation instead of relying on the ~/.openclaw default
- Skip the migration entirely when the source app was never installed
When it happens
Trigger: Invoking the OpenClaw memory migration with no explicit source path on a machine where `~/.openclaw/workspace` does not exist, or with an explicit path that is wrong (typo, different user's home, unmounted volume).
Common situations: Running the migration on a machine where OpenClaw was never installed; running as a different user than the one owning the data; containerized cores where the OpenClaw dir is not mounted; typo'd custom source path.
Related errors
- Source workspace matches current OpenHuman workspace; refusi
- Hermes workspace not found at {}. Provide a valid source wor
- OpenClaw memories table found but no content-like column was
- Failed to determine user home directory
- Not running in Tauri
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/21d35d247cce3afe.
Report an issue: GitHub.