tinyhumansai/openhuman · error
Hermes workspace not found at {}. Provide a valid source wor
Error message
Hermes workspace not found at {}. Provide a valid source workspace. What it means
`migrate_hermes_memory` resolves the Hermes source workspace — explicit argument, else `~/.hermes` (`%LOCALAPPDATA%\hermes` on Windows) — and refuses to run when the path does not exist. Like the OpenClaw guard, it will not fabricate an empty migration from a missing source; the message echoes the resolved path.
Source
Thrown at src/openhuman/config/migration_helpers/core.rs:319
"hermes_user_profile",
MemoryCategory::Custom("user_profile".to_string()),
),
(
"SOUL.md",
"hermes_persona",
MemoryCategory::Custom("persona".to_string()),
),
]
}
pub async fn migrate_hermes_memory(
config: &Config,
source_workspace: Option<PathBuf>,
dry_run: bool,
) -> Result<MigrationReport> {
let source_workspace = resolve_hermes_workspace(source_workspace)?;
if !source_workspace.exists() {
bail!(
"Hermes 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 mut warnings = Vec::new();
let mut entries = Vec::new();
for (filename, key, category) in hermes_file_mappings() {
let path = source_workspace.join(filename);
if !path.exists() {
warnings.push(format!(
"{filename} not found in {}",View on GitHub (pinned to 7491200858)
Solutions
- Pass the correct Hermes data directory explicitly to the migration call.
- Restore or mount the Hermes data at the default location and retry.
- Skip the migration when Hermes was never installed on this machine.
Example fix
// before
let report = migrate_hermes_memory(&config, None, false).await?;
// after — explicit, verified source
let src = PathBuf::from("/data/hermes");
if !src.is_dir() { anyhow::bail!("no Hermes data at {}", src.display()); }
let report = migrate_hermes_memory(&config, Some(src), false).await?; Defensive patterns
Strategy: validation
Validate before calling
let src = source_path.unwrap_or_else(|| hermes_default_path()); // ~/.hermes or %LOCALAPPDATA%/hermes
if !src.is_dir() {
// Hermes not present on this machine — skip the migration instead of calling it
return Ok(None);
}
let report = migrate_hermes_memory(&config, Some(src), dry_run).await?; Prevention
- Check the source path exists before invoking the migration
- Pass explicit source paths in automation
- Skip the migration when Hermes was never installed
When it happens
Trigger: Running the Hermes migration on a machine where Hermes is not installed at the default location, or with an explicit path that is wrong, on an unmounted volume, or owned by a different user.
Common situations: Migration offered or run on machines that never had Hermes installed; wrong user account (home differs); data on an unmounted or container-uncmounted volume.
Related errors
- OpenClaw workspace not found at {}. Provide a valid source w
- Source workspace matches current OpenHuman workspace; refusi
- Not running in Tauri
- OpenClaw memories table found but no content-like column was
- Failed to determine user home directory
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/f776d865912307e0.
Report an issue: GitHub.