Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>JETLS ClientNew to Visual Studio Code? Get it now.
JETLS Client

JETLS Client

aviatesk

|
532 installs
| (3) | Free
A new language server for Julia
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

jetls-client

A VSCode client extension for JETLS.

JETLS is a new language server for Julia. JETLS aims to enhance developer productivity by providing advanced static analysis and seamless integration with the Julia runtime. By leveraging tooling technologies like JET.jl, JuliaSyntax.jl and JuliaLowering.jl, JETLS aims to offer enhanced language features such as type-sensitive diagnostic, macro-aware go-to definition and such.

[!note]

JETLS.jl is not integrated with the julia-vscode extension yet. To use JETLS from VSCode, install this jetls-client extension. While we generally recommend disabling julia-vscode when using jetls-client, this is not required; you can use both julia-vscode and jetls-client in the same VSCode session. However, since the LSP features provided by JETLS.jl differ in both type and quality from those provided by julia-vscode's language server backend (LanguageServer.jl), you may encounter confusing situations where, for example, completion candidates are provided from different backends.

Requirements

  • VSCode v1.96.0 or higher
  • Julia v1.12.2 through 1.13.x, with the julia command available on PATH

JETLS does not support Julia 1.12.1 or earlier, nor Julia 1.14+/nightly.

Installation

  1. Make sure the julia command works in a VSCode terminal.
  2. Install jetls-client from the Extensions view by searching for "JETLS Client".
  3. Open any Julia file.

No separate JETLS installation is required. On first use, the extension automatically installs a compatible JETLS server. It updates the server when an extension update requires a newer version.

The extension stores JETLS separately from packages in your regular Julia depot. Different Julia installations and Julia minor versions use separate managed copies, and copies for a Julia you stopped using are removed automatically after a while. You do not need to configure or maintain this storage. See Managed server storage for locations and overrides.

The first installation and each managed update require network access. Once installed, the cached server can start while offline. The status bar shows whether managed JETLS is being checked, installed, started, or has failed, and installations show a progress notification from which they can be cancelled.

The extension launches only the exact JETLS version its release pins. When that version cannot be installed or verified — for example, while offline — startup fails with an error notification. The notification offers to retry and to show the JETLS output, which records the full details; clicking the failed status bar item opens the same output.

To recover from a broken managed installation, run JETLS Client: Reinstall Server from the Command Palette. The command asks for confirmation and installs a fresh copy, which requires network access; superseded copies are cleaned up automatically.

Managed server storage

Storage is managed automatically. If you encounter Windows path-length errors or need a different location, set jetls-client.managedStoragePath to a short, writable absolute path on the machine running the extension, such as C:/jetls. Leave it empty to keep using VSCode's extension storage.

Selecting a new location requires a fresh installation and network access; existing depots are not moved or deleted. This setting is ignored when using a custom executable.

Launching configuration (advanced)

Most users do not need any configuration beyond the installation steps above. When the defaults do not fit your setup, adjust how the server is launched through the jetls-client.executable setting:

  • To customize the managed server launch, use the object form with path omitted; the optional threads and env fields control the launch. For example, if you use juliaup, select the Julia channel by setting JULIAUP_CHANNEL:

    {
      "jetls-client.executable": {
        "threads": "1", // the default is "auto"
        "env": {
          "JULIAUP_CHANNEL": "1.13"
        }
      }
    }
    

    This takes effect when the default julia command resolves to the juliaup launcher.

    To select a Julia executable other than the default julia command, set JULIA_APPS_JULIA_CMD:

    {
      "jetls-client.executable": {
        "env": {
          "JULIA_APPS_JULIA_CMD": "/absolute/path/to/julia"
        }
      }
    }
    

    The command must be the Julia executable itself (on Windows, julia.exe rather than a .bat/.cmd wrapper), since the managed installation launches it directly; JULIAUP_CHANNEL is ignored in this case.

  • To use a JETLS binary you manage yourself, specify its path. This bypasses managed installation and updates:

    {
      "jetls-client.executable": {
        "path": "/absolute/path/to/jetls"
      }
    }
    
  • To develop JETLS from a local checkout, provide the full launch command as an array. This also bypasses managed installation:

    {
      "jetls-client.executable": [
        "julia",
        "--startup-file=no",
        "--history-file=no",
        "--project=/path/to/JETLS",
        "-m",
        "JETLS",
        "serve"
      ]
    }
    

Communication channel

The extension automatically selects the most appropriate communication channel based on your environment:

  • Local development: pipe - Complete isolation from stdin/stdout, fastest for local communication
  • Remote SSH/WSL: pipe - Works transparently across remote connections
  • Dev Containers: stdio - Maximum compatibility for containerized environments

For most users, this automatic selection provides optimal performance and reliability without requiring manual configuration.

You can override the automatic selection using "jetls-client.communicationChannel": string:

  • "auto" (default): Automatic selection as described above
  • "pipe": Uses Unix domain socket/named pipe
  • "socket": Uses TCP socket (configure port with "jetls-client.socketPort": number, default 0 for auto-assign)
  • "stdio": Uses standard input/output

For detailed information about each communication channel and when to use them, see the Communication channels documentation.

Initialization options

Static options that are sent to JETLS during startup can be configured through VSCode's settings.json file using the "jetls-client.initializationOptions" section. These settings require a server restart to take effect.

For detailed initialization options and examples, see the Initialization options documentation.

Example initialization options

{
  "jetls-client.initializationOptions": {
    "analysis_overrides": [
      {
        "path": "test/fixtures/**",
        "full_analysis": false
      }
    ]
  }
}

Configuring JETLS

JETLS behavior (diagnostics, formatting, etc.) can be configured through VSCode's settings.json file using the jetls-client.settings section.

For detailed configuration options and examples, see the Configuration documentation.

Example configuration

.vscode/settings.json

{
  "jetls-client.settings": {
    // Wait 2 seconds after save before running full analysis
    "full_analysis": {
      "debounce": 2.0
    },
    // Use JuliaFormatter instead of Runic
    "formatter": "JuliaFormatter",
    // Change the severity of specific diagnostics
    "diagnostic": {
      "patterns": [
        // Suppress toplevel/inference warnings in test folder
        {
          "pattern": "(toplevel|inference)/.*",
          "match_by": "code",
          "match_type": "regex",
          "severity": "off",
          "path": "test/**/*.jl"
        }
      ]
    },
    "testrunner": {
      // Run tests with Julia 1.12 via juliaup
      "env": {
        "JULIAUP_CHANNEL": "1.12"
      },
      // Run tests with 4 threads
      "julia_args": ["--threads=4"]
    }
  }
}

License

MIT License. See LICENSE.md for details.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft