The Erlang Language Platform (ELP) is a powerful tool for Erlang developers, which is developed by WhatsApp team. It includes a fully fledged LSP language server and eqWAlizer, a type-checker for Erlang.
However, the ELP needs to run on the same version of Erlang/OTP as the project you are working on. This can be a problem if you have multiple projects with different versions of Erlang/OTP.
The elp team uses its release dates as its release versions, which causes existing tools like mise, asdf or other hard to manage with simple configuration. And in practice, the elp version command does not provide the OTP version information it related to. Sometimes when I switch between different Erlang projects with wrong elp version in the PATH, it causes issues.
Tools like mise or asdf can help you to manage development tool versions for your projects. If you are using mise (recommended) or asdf, you can use my plugins to manage the elp version for your projects.
# Install the `mise-elp` plugin for `mise`:
mise plugin install elp https://github.com/belltoy/mise-elp.git
## List available versions
mise ls-remote elp
## Install latest version
mise install elp
## Install OTP specific latest version aliases
mise install elp@otp-26
mise install elp@otp-27
mise install elp@otp-28
## Install specific version
mise install elp@otp-28-2025-11-04
Then add elp config to your .mise.toml for project-specific usage:
[tools]
erlang = "27"
elp = "otp-27".mise.toml
In a new project, run mise install to install all tools specified in .mise.toml, including elp.
Read more about mise-elp plugin in its GitHub repository.
There is also an asdf-elp plugin for asdf users.
If you are an Erlang developer, I hope these plugins can help you to manage your elp versions easily and avoid issues caused by wrong versions in the PATH.
References
- Erlang Language Platform (ELP) - The Erlang Language Platform
- mise - Dev tools, env vars, and tasks in one CLI
- mise-elp - A mise plugin for elp
- asdf-elp - A asdf plugin for elp