
Dexter — the Go-based Elixir LSP that indexes 57k files in 11 seconds
Dexter (`remoteoss.dexter-lsp` v0.2.1) is a Go-based Elixir language server built by Remote.com for their 57,000-file monorepo — cold-indexes in ~11 seconds by parsing source text directly into SQLite rather than compiling the project. The article covers a 3-step VS Code setup (Homebrew binary → extension install → format-on-save config), a full rundown of its LSP capabilities (go-to-definition including Erlang, hover docs, completions, rename, unused-variable detection), honest caveats (no Dialyzer, no debugger, macro-heavy Ash Framework projects lose coverage, Intel Mac requires source build), and v0.7.0 highlights including Erlang support and a Claude Code plugin.

The engineers at Remote.com run a 57,000-file Elixir monorepo. For a long time that meant no working LSP. ElixirLS would start indexing and never finish — or take so long that switching branches triggered another full index cycle, making the whole thing pointless. As Jesse Herrick, Dexter's author, put it: "Many of us on the engineering team had all but given up on the idea of ever having a working LSP." 1
The reason existing Elixir LSPs struggle at scale is architectural: they compile your project to extract type information and AST data. On a 57k-file codebase, that compilation takes hours, and every branch switch resets the clock.
Dexter (
remoteoss.dexter-lsp) takes a different route. It skips compilation entirely, parsing source files directly into a SQLite index. On the same 57k-file repo: cold index in ~11 seconds, find-references in ~10 ms, save-triggered format in under 1 ms. 1 It went open-source on April 9, 2026 under MIT license — built by Remote.com for their own monorepo, now available to everyone.Setup in three steps
Requirements: macOS Apple Silicon or Linux ARM (Intel Mac requires building from source 2); VS Code ≥ 1.75.0; Elixir project.
1. Install the Dexter binary
The easiest route on macOS is Homebrew: 1
brew install remoteoss/tap/dexterOr use
mise if you manage runtimes that way:mise use -g aqua:remoteoss/dexter@latest2. Install the VS Code extension
Search Dexter in the Extensions panel (publisher: Remote), or install from the terminal:
code --install-extension remoteoss.dexter-lspThe extension is
remoteoss.dexter-lsp v0.2.1 — 376 installs, 5.0/5 rating. 33. Enable format-on-save
Add these lines to your
.vscode/settings.json:{
"[elixir]": {
"editor.formatOnSave": true
},
"[phoenix-heex]": {
"editor.formatOnSave": true
}
}Open any
.ex file. Dexter indexes the project in the background — for a typical mid-size Elixir app, it finishes before you've finished reading this sentence.
What you get
- Go-to-definition — follows
defdelegatechains up to 5 hops deep, resolvesaliasandimportblocks, and as of v0.7.0 jumps into.erlsource for Erlang functions like:lists.map/2 - Hover docs — renders
@doc,@moduledoc,@typedoc, and@specas formatted Markdown in the tooltip - Autocompletion — module names, function heads, struct fields, with snippet support
- Rename — renames a module or function across the whole workspace, including auto-renaming the file
- Unused variable detection — flags variables that are bound but never read

Dexter also handles
.heex, .eex, and .livemd files — the extension ships its own syntax highlighting for all four Elixir file types since v0.2.0. 3One optional config that trips up Homebrew users: if you installed Elixir via Homebrew, the stdlib modules (
String, Enum, etc.) won't autocomplete because Homebrew ships only compiled .beam files, not .ex sources. Fix it by cloning the matching Elixir version and pointing the setting at it: 4{
"dexter.stdlibPath": "/path/to/elixir-1.18.3/lib"
}Where it stops
Dexter doesn't compile your code, which is how it stays fast — and also where its boundaries sit.
No inline diagnostics. You won't see compiler errors or warnings underlined in the editor. Dialyzer integration doesn't exist, and there's no debugger (DAP). For those, ElixirLS (the community-maintained LSP) remains the option; it's slower on large repos but carries a decade of compilation-aware tooling. 5
Macro-heavy projects lose coverage. Ash Framework users in the community have found that Dexter's go-to-definition and completions largely break down for Ash-generated modules, since those only exist after macro expansion at compile time. 6 A diagnostics feature request (issue #29) has a community proof-of-concept branch, but no timeline. 7
Windows isn't supported. Pre-built binaries cover Apple Silicon and Linux ARM only; Intel Mac requires a source build (Go 1.21+). 2
The practical split: use Dexter if you need snappy navigation and completions on a codebase that compilation-based LSPs can't keep up with. Keep ElixirLS if inline diagnostics or the debugger are non-negotiable.
v0.7.0 highlights (released May 29, 2026)
The most recent release adds a few things worth knowing about: 8
- Erlang go-to-definition and hover — jump from
:lists.map/2in your Elixir code into the actual.erlsource, with EDoc rendered in the hover popup - Claude Code plugin —
claude plugin marketplace add remoteoss/dexterinstalls Dexter as the Elixir LSP for Claude Code sessions - Bracket-pair folding — maps, lists, tuples, and binaries all fold in the editor gutter
- Zed extension now in the official registry
Loading content card…
Install
Extension ID:
remoteoss.dexter-lsp · Extension version: v0.2.1 · Server version: v0.7.0 (2026-05-29) · IDE: VS Code ≥ 1.75.0 · Language: Elixir (.ex / .exs / .heex / .eex / .livemd) · Use case: LSP (navigation, hover, completions, formatting, rename) · License: MIT · GitHub: 322 ★, 20 forks 1 · VS Code Marketplace: 376 installs, 5.0/5 3Cover image: official Dexter logo from github.com/remoteoss/dexter (MIT license)
References
- 1GitHub — remoteoss/dexter
- 2Issue #60 — Any plans for Intel Mac?
- 3Dexter — Visual Studio Marketplace
- 4Why Dexter LSP doesn't autocomplete Elixir stdlib modules — YellowDuck.be
- 5GitHub — elixir-lsp/elixir-ls
- 6ElixirForum — Dexter thread
- 7Issue #29 — feature request: diagnostics
- 8CHANGELOG.md — remoteoss/dexter
Add more perspectives or context around this Post.