can1357/oh-my-pi · error · Error

${availability.reason ?? "Julia kernel unavailable"}

Error message

${availability.reason ?? "Julia kernel unavailable"}

What it means

Before executing Julia code, `executeJulia` calls `ensureKernelAvailable`, which probes the environment via `checkJuliaKernelAvailability`: it enumerates Julia runtimes and runs `julia -e 'exit(0)'` against each candidate. This plain Error is thrown with the probe's failure reason (or a generic fallback) when no working Julia interpreter can be found — typically because the `julia` binary is absent from PATH or the located binaries fail to execute.

Source

Thrown at packages/coding-agent/src/eval/jl/executor.ts:176

	return executeWithKernelBase<JuliaExecutorOptions, Record<string, string | undefined>>({
		kernel,
		code,
		options,
		runIdPrefix: "jl",
		errorLogLabel: "Julia",
		isJulia: true,
		cancelledErrorClass: JuliaExecutionCancelledError,
		buildKernelEnvPatch: opts => buildManagedKernelEnvPatch(opts, { sparse: true }),
		formatKernelTimeoutAnnotation,
		formatTimeoutAnnotation,
		resolveDeadlineMs: opts => opts?.deadlineMs,
	});
}

async function ensureKernelAvailable(cwd: string, options: JuliaExecutorOptions): Promise<void> {
	const availability = await waitForJuliaPromise(checkJuliaKernelAvailability(cwd, options.interpreter), options);
	if (!availability.ok) {
		throw new Error(availability.reason ?? "Julia kernel unavailable");
	}
}

async function ensureToolBridge(options: JuliaExecutorOptions): Promise<void> {
	if (!options.toolSession || options.bridge) return;
	try {
		options.bridge = await ensurePyToolBridge();
	} catch (err) {
		logger.warn("Failed to start Julia tool bridge", {
			error: err instanceof Error ? err.message : String(err),
		});
	}
}

const sessionRegistry = createKernelSessionRegistry<
	JuliaKernel,
	JuliaExecutorOptions,
	JuliaResult,

View on GitHub (pinned to 9690622007)

Solutions

  1. Install Julia from https://julialang.org/ (or via juliaup) and ensure it is on the process PATH.
  2. Read the thrown reason: "Julia executable not found on PATH" → PATH/install issue; "No working Julia interpreter found. Tried: ..." → the listed binaries fail, fix or remove them.
  3. Pass a valid `interpreter` option pointing at a working `julia` binary path.
  4. If the reason says the probe was cancelled, raise the eval timeout/deadline.
  5. On Linux, verify the binary runs standalone (`julia -e 'exit(0)'`) to catch missing shared libraries.

Example fix

// before: fails, julia not on PATH
await executeJulia("println(1)");
// after: point at an explicit interpreter or fix PATH
await executeJulia("println(1)", { interpreter: "/opt/julia/bin/julia" });
Defensive patterns

Strategy: validation

Validate before calling

import { checkJuliaKernelAvailability } from ".../eval/jl/kernel";
const avail = await checkJuliaKernelAvailability(cwd, interpreter);
if (!avail.ok) throw new Error(`Julia unavailable: ${avail.reason}`); // or skip the Julia cell

Type guard

function isJuliaAvailable(a: { ok: boolean; reason?: string }): a is { ok: true; juliaPath: string } {
  return a.ok;
}

Try / catch

try {
  return await executeJulia(code);
} catch (e) {
  if (String(e).includes("Julia")) return skippedResult("julia not installed");
  throw e;
}

Prevention

When it happens

Trigger: `executeJulia(code, ...)` runs when: no Julia executable is found on PATH (or project/env-scoped locations); an explicit `options.interpreter` path is invalid; all candidate binaries fail the `exit(0)` probe (corrupt install, missing shared libs, wrong arch); or the probe was cancelled by the abort signal/deadline.

Common situations: Julia not installed on the machine or CI image; julia installed but not on PATH for the process env; partial/corrupt juliaup install; musl/glibc mismatch making the binary fail to launch; expired eval deadline cancelling the probe.

Related errors


AI-assisted analysis of can1357/oh-my-pi@9690622007 (2026-08-31). Data as JSON: /api/errors/2ac9e67a70097122. Report an issue: GitHub.