IntelliJ Gleam
June 16, 2026 · View on GitHub
Gleam language support for JetBrains IDEs.
Provides syntax highlighting, plus code completion, navigation, hover, diagnostics, and
formatting through the Gleam language server. Includes run/test configurations for
gleam run and gleam test.
Installation
-
Using the IDE built-in plugin system:
Settings/Preferences > Plugins > Marketplace > Search for " intellij-gleam" > Install
-
Using JetBrains Marketplace:
Go to JetBrains Marketplace and install it by clicking the Install to ... button in case your IDE is running.
You can also download the latest release from JetBrains Marketplace and install it manually using Settings/Preferences > Plugins > ⚙️ > Install plugin from disk...
-
Manually:
Download the latest release and install it manually using Settings/Preferences > Plugins > ⚙️ > Install plugin from disk...
Requirements
- A Gleam install for the language server and the
gleamCLI. - Erlang/OTP to run or test code on the Erlang target (the default).
- A JavaScript runtime (Node, Deno, or Bun) only if you build for the JavaScript target.
Toolchain setup
Editor features (highlighting, completion, navigation) work as soon as the plugin finds gleam.
Run and test configurations also need to find Erlang.
The plugin auto-detects these from your PATH, from asdf, and from the
usual install locations. To check or override what it found, open
Settings > Languages & Frameworks > Gleam:
- Gleam executable path: the
gleambinary. - Erlang path: your Erlang/OTP install. See the note below.
- JavaScript runtime path: the
node/deno/bunbinary. Leave empty to usePATH.
Settings are global by default. To use a different toolchain for one project, open Project Settings under the same page and tick Override global toolchain for this project.
Running and testing
- Right-click a
.gleamfile (or use the gutter icon next to apub fn main) to run it, or run the whole suite withgleam test. - Each configuration has a target (Default / Erlang / JavaScript). Default lets
gleam.tomldecide. Pick Erlang or JavaScript to force one and validate only that toolchain. gleam testoutput is a plain console. gleeunit prints passing tests as bare dots and has no verbose mode, so there's no green/red test tree. Failures are linkified back to the test function.
Troubleshooting
"Erlang SDK path is invalid: ... (expected a directory containing bin, lib, and releases)"
Run/test on the Erlang target needs the OTP install directory, the one containing bin/,
lib/, and releases/, not a wrapper or shim. Pointing the Erlang path at a shim (an asdf
~/.asdf/shims/erl, or a symlink in /usr/local/bin) fails this check even though erl runs fine
in a terminal. Set it to the real install instead, for example:
- asdf:
~/.asdf/installs/erlang/<version> - Homebrew:
$(brew --prefix erlang)/lib/erlang - Linux packages:
/usr/lib/erlang
You can point the field at the install root, its bin/ directory, or the erl binary inside that
bin/; all three resolve to the same root. The field also accepts a value picked from the
detection dropdown.