tinyhumansai/openhuman · error · Error
[openhuman] Extraction failed — binary not found after unpac
Error message
[openhuman] Extraction failed — binary not found after unpack.
What it means
After unpacking, the installer expects the binary at binDest (binDir/openhuman-core renamed into place on unix, the expanded path on Windows); if extraction nominally succeeded but binDest still does not exist, the archive layout did not match expectations and install fails.
Source
Thrown at packages/npm/install.js:157
],
{ stdio: 'inherit', env: { ...process.env, TC_SRC: tmpTarball, TC_DEST: binDir } }
);
const extracted = path.join(binDir, 'openhuman-core.exe');
if (fs.existsSync(extracted)) fs.renameSync(extracted, binDest);
} else {
execFileSync('tar', ['-xzf', tmpTarball, '-C', binDir], { stdio: 'inherit' });
const extracted = path.join(binDir, 'openhuman-core');
if (fs.existsSync(extracted)) {
fs.renameSync(extracted, binDest);
fs.chmodSync(binDest, 0o755);
}
}
// Clean up archive
fs.rmSync(tmpTarball, { force: true });
if (!fs.existsSync(binDest)) {
throw new Error('[openhuman] Extraction failed — binary not found after unpack.');
}
console.log(`[openhuman] Installed at ${binDest}`);
}
main().catch((err) => {
console.error('\n[openhuman] Installation failed:', err.message);
console.error('You can file a bug at https://github.com/tinyhumansai/openhuman/issues');
process.exit(1);
});
View on GitHub (pinned to a221052e0d)
Solutions
- Clear the temp/cache directory and re-run install so a fresh, matching tarball extracts
- Inspect what actually unpacked (list binDir) and check the archive layout with tar -tzf on the cached tarball
- Verify the downloaded target triple matches your machine and check release notes for layout changes; file an issue with the tar -tzf output
Defensive patterns
Strategy: retry
Validate before calling
// Inspect the cached archive layout before extraction:
// tar -tzf openhuman-core-<target>.tar.gz must list ./openhuman-core at the root
const { execFileSync } = require('child_process');
const listing = execFileSync('tar', ['-tzf', tmpTarball]).toString();
if (!listing.split('\n').some(l => l.replace(/^\./, '') === '/openhuman-core')) {
throw new Error('unexpected archive layout');
} Try / catch
try {
await install();
} catch (e) {
if (String(e.message).includes('binary not found after unpack')) {
// stale/corrupt artifact: clear cache so the next install fetches a fresh one
await clearInstallCache();
return;
}
throw e;
} Prevention
- Clear the installer temp/cache dir after a failed install so the next run re-downloads
- Check tar -tzf output when pinning unusual versions to catch layout changes
- Keep installer script and published release in the same version — never mix
When it happens
Trigger: The tarball unpacks a different binary name or a nested directory instead of ./openhuman-core at the archive root (release layout change, or a wrong-target artifact that still extracts); Windows PowerShell expand producing an unexpected path; a rename that failed silently.
Common situations: Cached old tarball paired with a newer installer; release published with a nested folder like openhuman-core-vX/openhuman-core.
Related errors
- Unsupported platform: ${platform}
- Unsupported arch ${arch} on ${platform}
- [openhuman] Checksum mismatch!\n expected: ${expectedChecks
AI-assisted analysis of tinyhumansai/openhuman@a221052e0d (2026-08-16).
Data as JSON: /api/errors/d175ef7ade7d8c35.
Report an issue: GitHub.