{"record":{"id":"7c5e1525c1c42e9e","repo":"thedotmack/claude-mem","slug":"uv-installation-completed-but-binary-not-found-pl","errorCode":null,"errorMessage":"uv installation completed but binary not found. Please restart your terminal and try again.","messagePattern":"uv installation completed but binary not found\\. Please restart your terminal and try again\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/npx-cli/install/setup-runtime.ts","lineNumber":214,"sourceCode":"\n/** Run the platform-specific uv installer, then confirm the binary is resolvable. */\nfunction runUvInstaller(): void {\n  if (IS_WINDOWS) {\n    execSync('powershell -ExecutionPolicy ByPass -c \"irm https://astral.sh/uv/install.ps1 | iex\"', {\n      stdio: 'pipe',\n      timeout: INSTALL_TIMEOUT_MS,\n      shell: process.env.ComSpec ?? 'cmd.exe',\n    });\n  } else {\n    execSync('curl -LsSf https://astral.sh/uv/install.sh | sh', {\n      stdio: 'pipe',\n      timeout: INSTALL_TIMEOUT_MS,\n      shell: '/bin/bash',\n    });\n  }\n\n  if (!isUvInstalled()) {\n    throw new Error(\n      'uv installation completed but binary not found. Please restart your terminal and try again.',\n    );\n  }\n}\n\nfunction installUv(): void {\n  try {\n    runUvInstaller();\n  } catch (error) {\n    const err = error instanceof Error ? error : new Error(String(error));\n    const manualInstructions = IS_WINDOWS\n      ? '  - winget install astral-sh.uv\\n  - Or: powershell -c \"irm https://astral.sh/uv/install.ps1 | iex\"'\n      : '  - curl -LsSf https://astral.sh/uv/install.sh | sh\\n  - Or: brew install uv (macOS)';\n    throw new Error(\n      `Failed to install uv. Please install manually:\\n${manualInstructions}\\nThen restart your terminal and try again.\\n` +\n        `Underlying error: ${describeExecError(err)}`,\n    );\n  }","sourceCodeStart":196,"sourceCodeEnd":232,"githubUrl":"https://github.com/thedotmack/claude-mem/blob/d768ba364302d12b76e69e4f021f0bb1d2d50ed6/src/npx-cli/install/setup-runtime.ts#L196-L232","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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%\\.local\bin) 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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"function uvOnPath(): boolean {\n  try { execSync('uv --version', { stdio: 'pipe' }); return true; } catch { return false; }\n}\nif (!uvOnPath() && !userHasOptedOutOfVectorSearch()) { /* abort with PATH hint */ }","typeGuard":null,"tryCatchPattern":"try {\n  runUvInstaller();\n} catch (e) {\n  if (e instanceof Error && /binary not found/.test(e.message)) {\n    // hint: open new terminal, or prepend ~/.local/bin to PATH\n  }\n  throw e;\n}","preventionTips":["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."],"tags":["install","uv","runtime","path","python"],"backgroundTag":null,"analyzedSha":"d768ba364302d12b76e69e4f021f0bb1d2d50ed6","analyzedAt":"2026-08-12T23:52:55.241Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}