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
- Reinstall the local runtime: delete getEmbeddingRuntimeDir() contents and re-run so the command re-downloads it.
- Switch to HTTP mode (configure an HTTP embedding endpoint) to bypass the local runtime entirely.
- Check the assessment message for the blocked reason — often an unsupported platform/arch; use a supported Node version/OS.
- Verify no antivirus/permissions policy is preventing the native module under the runtime dir from loading.
- 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
- Run `gitnexus analyze --embeddings` once on a new machine to install/verify the runtime before scripting syncs.
- Prefer HTTP embedding mode in containers/CI where native binaries are unreliable.
- Check the runtime install directory after failed installs and clear it before retrying.
- Confirm your Node version and platform/arch have supported prebuilt native binaries.
- Ensure security policies (antivirus, sandboxing) allow loading native modules from the runtime dir.
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
- Local embeddings are unavailable after the sidecar aborted
- analyze --watch does not support
- analyze --watch does not support
- Cannot sync embeddings: the index checkpoint was written by
- Cannot sync embeddings: this index stores FLOAT
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)