oraios/serena · error · RuntimeError

Julia is not installed or not in your PATH. Please install J

Error message

Julia is not installed or not in your PATH. Please install Julia from https://julialang.org/downloads/ and ensure it is accessible. Checked locations: {common_locations}

What it means

Serena's Julia language server requires a Julia runtime to launch. _setup_runtime_dependency probes a list of common install locations (and PATH) for a julia executable that is readable and executable; if none qualifies, it raises RuntimeError with the checked locations.

Source

Thrown at src/solidlsp/language_servers/julia_server.py:74

        """
        # First check if julia is in PATH
        julia_path = shutil.which("julia")

        # If not found in PATH, check common installation locations
        if julia_path is None:
            common_locations = [
                os.path.expanduser("~/.juliaup/bin/julia"),
                os.path.expanduser("~/.julia/bin/julia"),
                "/usr/local/bin/julia",
                "/usr/bin/julia",
            ]

            for location in common_locations:
                if os.path.isfile(location) and os.access(location, os.X_OK):
                    julia_path = location
                    break

        if julia_path is None:
            raise RuntimeError(
                "Julia is not installed or not in your PATH. "
                "Please install Julia from https://julialang.org/downloads/ and ensure it is accessible. "
                f"Checked locations: {common_locations}"
            )

        # Check if LanguageServer.jl is installed.
        # stdin=DEVNULL: when Serena runs over the stdio MCP transport, the JSON-RPC
        # channel *is* the process stdin/stdout. Without this, the Julia child inherits
        # Serena's stdin (the MCP pipe) and clobbers it, killing the server right after
        # initialize ("tools fetch failed"). See https://github.com/oraios/serena/issues/1577
        check_cmd = [julia_path, "-e", "using LanguageServer"]
        try:
            result = subprocess_run(check_cmd, check=False, capture_output=True, text=True, timeout=10)
            if result.returncode != 0:
                # LanguageServer.jl not found, install it
                JuliaLanguageServer._install_language_server(julia_path)
        except subprocess.TimeoutExpired:

View on GitHub (pinned to 7fcbca7e62)

Solutions

  1. Install Julia from https://julialang.org/downloads/ and ensure the `julia` binary is on PATH.
  2. Symlink or copy your existing julia binary into one of the checked common_locations (e.g. /usr/local/bin/julia).
  3. If julia exists at a custom path, chmod +x it and export PATH so the probe (`which julia`) succeeds.
  4. Verify with `julia --version` that the runtime is reachable before restarting Serena.

Example fix

// before
$ serena start --language julia
// RuntimeError: Julia is not installed or not in your PATH...
// after
$ ln -s ~/julia-1.10.4/bin/julia /usr/local/bin/julia
$ julia --version
$ serena start --language julia
Defensive patterns

Strategy: validation

Validate before calling

import os, shutil
def validate_julia_runtime(common_locations=None) -> bool:
    if shutil.which("julia"):
        return True
    for loc in common_locations or ["/usr/local/bin/julia", "/usr/bin/julia", os.path.expanduser("~/julia/bin/julia")]:
        if os.path.isfile(loc) and os.access(loc, os.X_OK):
            return True
    return False
# call before constructing the Julia language server; if False, install Julia or symlink into a checked location

Try / catch

try:
    server = JuliaLanguageServer(**kwargs)
except RuntimeError as e:
    if "Julia is not installed" in str(e):
        raise EnvironmentError(
            "Install Julia (https://julialang.org/downloads/) and ensure `julia` is on PATH, "
            "then retry. Locations checked: " + str(e)
        ) from e
    raise

Prevention

When it happens

Trigger: __init__ calls _setup_runtime_dependency; every path in common_locations fails either os.path.isfile() or os.access(location, os.X_OK), and no julia was found on PATH, so julia_path stays None and the RuntimeError is raised.

Common situations: Julia simply not installed; julia installed via snap/homebrew/conda in a location not in common_locations; julia downloaded as tarball and extracted but never added to PATH; binary exists but lacks the execute bit; container/CI images missing the runtime.

Related errors


AI-assisted analysis of oraios/serena@7fcbca7e62 (2026-08-29). Data as JSON: /api/errors/26a5e0372be19282. Report an issue: GitHub.