thedotmack/claude-mem · error
uv installation completed but binary not found. Please resta
Error message
uv installation completed but binary not found. Please restart your terminal and try again.
What it means
Thrown by runUvInstaller() after the uv install script (curl|sh or powershell irm|iex) returned exit 0 but isUvInstalled() reports false. Symmetric to error 34 but for uv (the Python/Chroma runtime). The installer ran successfully yet the uv binary is not on PATH, so claude-mem cannot complete vector-search setup. Unlike bun, uv has an opt-out path when the user has disabled vector search.
Source
Thrown at src/npx-cli/install/setup-runtime.ts:214
/** Run the platform-specific uv installer, then confirm the binary is resolvable. */
function runUvInstaller(): void {
if (IS_WINDOWS) {
execSync('powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"', {
stdio: 'pipe',
timeout: INSTALL_TIMEOUT_MS,
shell: process.env.ComSpec ?? 'cmd.exe',
});
} else {
execSync('curl -LsSf https://astral.sh/uv/install.sh | sh', {
stdio: 'pipe',
timeout: INSTALL_TIMEOUT_MS,
shell: '/bin/bash',
});
}
if (!isUvInstalled()) {
throw new Error(
'uv installation completed but binary not found. Please restart your terminal and try again.',
);
}
}
function installUv(): void {
try {
runUvInstaller();
} catch (error) {
const err = error instanceof Error ? error : new Error(String(error));
const manualInstructions = IS_WINDOWS
? ' - winget install astral-sh.uv\n - Or: powershell -c "irm https://astral.sh/uv/install.ps1 | iex"'
: ' - curl -LsSf https://astral.sh/uv/install.sh | sh\n - Or: brew install uv (macOS)';
throw new Error(
`Failed to install uv. Please install manually:\n${manualInstructions}\nThen restart your terminal and try again.\n` +
`Underlying error: ${describeExecError(err)}`,
);
}View on GitHub (pinned to d768ba3643)
Solutions
- Open a new terminal so PATH reloads the updated profile, then re-run the installer.
- Add uv's install dir (default ~/.local/bin or %USERPROFILE%\.localin) to PATH and retry.
- Install uv manually (brew/winget/pip) into a PATH dir and re-run.
- If you don't need vector search, opt out via the documented vector-search opt-out so uv absence is tolerated.
Defensive patterns
Strategy: validation
Validate before calling
function uvOnPath(): boolean {
try { execSync('uv --version', { stdio: 'pipe' }); return true; } catch { return false; }
}
if (!uvOnPath() && !userHasOptedOutOfVectorSearch()) { /* abort with PATH hint */ } Try / catch
try {
runUvInstaller();
} catch (e) {
if (e instanceof Error && /binary not found/.test(e.message)) {
// hint: open new terminal, or prepend ~/.local/bin to PATH
}
throw e;
} Prevention
- Open a new terminal after uv install so ~/.local/bin is on PATH.
- In CI, prepend ~/.local/bin (or %USERPROFILE%\.local\bin) to PATH in the same job.
- If vector search is not needed, enable the opt-out so uv absence is tolerated.
When it happens
Trigger: uv installed to ~/.local/bin (or a local bin dir) that is not on the current PATH. The installer updated shell rc files that need a new shell. A non-standard UV install location. PATH not inherited by the child install process.
Common situations: First install on Linux/macOS where ~/.local/bin isn't in the login PATH yet. CI runners that don't source ~/.bashrc for non-login shells. Windows per-user PATH changes needing a new terminal.
Related errors
- Failed to install uv. Please install manually: ${manualInstr
- Bun installation completed but binary not found. Please rest
- Failed to install Bun. Please install manually: ${manualInst
- SSE stream response has no body
- ${ctx.component} failed during ${ctx.phase}: ${causeMessage(
AI-assisted analysis of thedotmack/claude-mem@d768ba3643 (2026-08-12).
Data as JSON: /api/errors/7c5e1525c1c42e9e.
Report an issue: GitHub.