abhigyanpatwari/GitNexus · error

assessment.message (local embedding runtime…

Error message

assessment.message (local embedding runtime blocked/unloadable)

What it means

In non-HTTP mode the local embedding runtime is assessed before syncing. Status 'blocked' or 'prefix-unloadable' means the local native/onnx runtime cannot be loaded or is blocked on this platform, so embeddings cannot be produced locally and the command aborts with the assessment's message.

Solutions

  1. Reinstall the local runtime: delete getEmbeddingRuntimeDir() contents and re-run so the command re-downloads it.
  2. Switch to HTTP mode (configure an HTTP embedding endpoint) to bypass the local runtime entirely.
  3. Check the assessment message for the blocked reason — often an unsupported platform/arch; use a supported Node version/OS.
  4. Verify no antivirus/permissions policy is preventing the native module under the runtime dir from loading.
  5. Run `gitnexus analyze --embeddings` once to trigger the runtime install flow and surface any install errors directly.

Example fix

// before
$ gitnexus embeddings-sync .   # Error: local runtime blocked/unloadable
// after
$ rm -rf "$(gitnexus config embedding-runtime-dir)"   # or the runtime dir path
$ gitnexus embeddings-sync .   # re-downloads runtime
// alternative: configure HTTP embedding endpoint instead of local runtime
Defensive patterns

Strategy: fallback

Validate before calling

// Pre-flight the local runtime before syncing (non-HTTP mode):
if (!process.env.EMBEDDING_HTTP_ENDPOINT) {
  const dir = getEmbeddingRuntimeDir();
  if (!existsSync(dir) || isEmptyDir(dir)) {
    await installEmbeddingRuntime(); // or rm -rf the dir and let the CLI reinstall
  }
}

Try / catch

try {
  await gitnexus.embeddingsSync(repo);
} catch (err) {
  if (/blocked|unloadable/.test(err.message)) {
    // Option A: reinstall the local runtime
    await reinstallEmbeddingRuntime();
    // Option B: fall back to HTTP embedding mode
    process.env.EMBEDDING_HTTP_ENDPOINT = 'http://localhost:11434';
    await gitnexus.embeddingsSync(repo);
  } else throw err;
}

Prevention

When it happens

Trigger: Running embeddings sync without HTTP mode configured while the local runtime is unusable — missing native binaries, unsupported platform/arch, corrupted runtime install directory (getEmbeddingRuntimeDir), or a runtime whose module prefix fails to load.

Common situations: Alpine/ musl or unusual architectures lacking prebuilt onnxruntime binaries; a partially-failed `needs-install` download left a broken runtime; security software blocking native module loading; Node version incompatibility with the native module.

Related errors


AI-assisted analysis of abhigyanpatwari/GitNexus@ac9a4e9abd (2026-09-15). Data as JSON: /api/errors/2162b1d72b872ab3. Report an issue: GitHub.

Appendix: source

Thrown at gitnexus/src/cli/embeddings-sync.ts:128

    // The vector column is FLOAT[N] fixed when the index was built, and the
    // pipeline deletes each batch's stale rows immediately before inserting the
    // replacements — so a width change here deletes rows it cannot re-insert.
    // `analyze` forces a full rebuild on the same mismatch; only a rebuild can
    // retype the column, so this writer refuses instead. An absent recorded
    // width is not a mismatch (see `embeddingDimsMismatch`).
    if (embeddingDimsMismatch(meta.embeddingDims, EMBEDDING_DIMS)) {
      throw new Error(
        `Cannot sync embeddings: this index stores FLOAT[${meta.embeddingDims}] vectors, ` +
          `but this run embeds at ${EMBEDDING_DIMS} dimensions. ` +
          'Run `gitnexus analyze --embeddings --force` to rebuild the column at the new width.',
      );
    }

    if (!isHttpMode()) {
      const assessment = assessLocalEmbeddingRuntime();
      if (assessment.status === 'blocked' || assessment.status === 'prefix-unloadable') {
        throw new Error(assessment.message);
      }
      if (assessment.status === 'needs-install') {
        cliInfo(`Local embedding runtime is not installed.`);
        cliInfo(`Downloading it now from your npm registry into ${getEmbeddingRuntimeDir()} …`);
        try {
          await installEmbeddingRuntime(
            {},
            getEmbeddingInstallTimeoutMs(ANALYZE_EMBEDDING_INSTALL_TIMEOUT_MS),
          );
        } catch (err) {
          throw new Error(
            `Could not install the embedding runtime: ${err instanceof Error ? err.message : String(err)}\n\n` +
              localEmbeddingStackMissingMessage(),
          );
        }
      }
    }

View on GitHub (pinned to ac9a4e9abd)