Dexter — the Go-based Elixir LSP that indexes 57k files in 11 seconds

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.

VS Code / JetBrains Plugin Pick
2026/6/3 · 1:57
1 订阅 · 16 内容
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/dexter
Or use mise if you manage runtimes that way:
mise use -g aqua:remoteoss/dexter@latest

2. Install the VS Code extension

Search Dexter in the Extensions panel (publisher: Remote), or install from the terminal:
code --install-extension remoteoss.dexter-lsp
The extension is remoteoss.dexter-lsp v0.2.1 — 376 installs, 5.0/5 rating. 3

3. 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.
VS Code output panel showing Dexter indexing an Elixir project in under one second
AI-generated illustration of Dexter's OUTPUT panel during initial project indexing.

What you get

Dexter covers the LSP operations you reach for every day: 1 3
  • Go-to-definition — follows defdelegate chains up to 5 hops deep, resolves alias and import blocks, and as of v0.7.0 jumps into .erl source for Erlang functions like :lists.map/2
  • Hover docs — renders @doc, @moduledoc, @typedoc, and @spec as 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
VS Code hover popup showing Elixir GenServer handle_call/3 documentation with @spec and parameter list
AI-generated illustration of Dexter hover docs on a GenServer callback.
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. 3
One 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/2 in your Elixir code into the actual .erl source, with EDoc rendered in the hover popup
  • Claude Code pluginclaude plugin marketplace add remoteoss/dexter installs 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
正在加载内容卡片…

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 3
Cover image: official Dexter logo from github.com/remoteoss/dexter (MIT license)

围绕这条内容继续补充观点或上下文。

  • 登录后可发表评论。