I’m curious how people here approach their daily Erlang workflow and would love to compare notes.
A few things I’m wondering about:
Which editor or IDE do you use, and which tools round out your setup (LSP, debugger, build/test helpers)?
What’s your AI stack? I’m especially interested in local models to avoid recurring API costs. Which models and runners (Ollama, llama.cpp, etc.) actually work well for Erlang?
For those running local AI, what hardware are you on? I’m on a Mac, so Apple Silicon specs and real-world performance would be super helpful.
If you’re willing to share your full setup, I’d really appreciate it.
I’ll go first to set a low bar in answers you might be hoping for. I recently started playing with Erlang again after maybe 20 years away? My setup:
IDE: emacs, with helm and project.el for project navigation.
LSP: settled on etags and C-c C-d from erlang-mode to bring up documentation inside emacs. I also have a browser tab to browse the excellent Erlang documentation locally. I sometimes will use eglot to run the elp eqwalise LSP but I find it too visually noisy while typing in new code.
AI: haven’t used it to generate code for Erlang yet. For other projects, I use tmux and emacs -nw which makes it easy to split screen with claude.
When writing C and C++ I use the clang LSP extensively with emacs eglot and it’s great. I just haven’t found the same benefits with Erlang yet. I add a small ‘make tags’ utility and update it now and then, and code navigation, including to Erlang libraries, works great and is sufficient.
In KDE and Linux I am using Kate as the developer editor and everything else (build etc) is from Konsole, the KDE terminal emulator.
In general I have a separate instance of Kate for each Erlang/OTP (or Elixir) application I work with (meaning several applications in a rebar3 umbrella project).
Plain and simple. Kate has very good support for Erlang and I can run an LSP if I like, but also without LSP there are color coding and some basic language support.
Easy to move editors around on the screens and place them where I need them. Always try to write code on the middle monitor to save my neck.
IDE: gvim (I’m old school ). I’m using Erlang LS (last time I’ve tried elp, it had problems with parse_trans and as our internal logger library uses parse_trans, it choked on most files, so wasn’t useful
AI: I’m using copilot as a “smart” code completion. Sometimes it’s brilliant, sometimes it’s really bad. It saves some copy&paste and :s commands, but nothing revolutionary. I also tried the copilot shell with some models, again, sometimes useful, other times I’ve spent days to unwind and fix the code it generated.
I use neovim with a bunch of plugins I’ve settled on (flash, gitsigns, outline, telescope, treesitter, and others). For Erlang specifically, elp is my LSP and erlfmt handles formatting. AI-wise, it’s opencode + OpenRouter. Dirty cheap models, basically.