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

  1. Open a new terminal so PATH reloads the updated profile, then re-run the installer.
  2. Add uv's install dir (default ~/.local/bin or %USERPROFILE%\.localin) to PATH and retry.
  3. Install uv manually (brew/winget/pip) into a PATH dir and re-run.
  4. 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

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


AI-assisted analysis of thedotmack/claude-mem@d768ba3643 (2026-08-12). Data as JSON: /api/errors/7c5e1525c1c42e9e. Report an issue: GitHub.