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
- Install Julia from https://julialang.org/ (or via juliaup) and ensure it is on the process PATH.
- 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.
- Pass a valid `interpreter` option pointing at a working `julia` binary path.
- If the reason says the probe was cancelled, raise the eval timeout/deadline.
- 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
- Probe availability once at eval-suite startup and skip Julia cells when absent.
- Pin Julia in CI images and add it to PATH for the runner user.
- Pass an explicit interpreter path instead of relying on PATH lookup.
- Verify the binary with `julia -e 'exit(0)'` in setup scripts.
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
- ${availability.reason ?? "Julia kernel unavailable"}
- imageUrls exposure "${name}" requires the ${name} binary on
- ${displayName} executable not found on PATH
- ssh binary not found on PATH
- Julia backend is unavailable in this session. Pass language:
AI-assisted analysis of can1357/oh-my-pi@9690622007 (2026-08-31).
Data as JSON: /api/errors/2ac9e67a70097122.
Report an issue: GitHub.