LSP Integration
BMO includes a built-in LSP client that connects to language servers over stdio. This enables live diagnostics, reference lookup, and ripple-impact analysis during agent sessions.
Configuration
Section titled “Configuration”[lsp.go]command = "gopls"
[lsp.go.env]GOTOOLCHAIN = "go1.24.5"
[lsp.typescript]command = "typescript-language-server"args = ["--stdio"]
[lsp.nix]command = "nil"LSP tools
Section titled “LSP tools”When language servers are configured, the agent has access to:
| Tool | Description |
|---|---|
lsp_diagnostics | Get live errors and warnings from the language server |
lsp_symbols_overview | Inspect the semantic symbol tree for a file |
lsp_find_symbol | Search for symbols across the workspace |
lsp_references | Find all references to a symbol |
lsp_rename_symbol | Rename a symbol semantically across declarations and references |
lsp_replace_symbol_body | Replace an entire symbol body using an exact semantic selector |
lsp_insert_before_symbol | Insert content immediately before a symbol |
lsp_insert_after_symbol | Insert content immediately after a symbol |
lsp_ripple_impact | Get a ranked list of files that reference recently changed symbols |
lsp_restart | Restart a language server (useful after large refactors) |
get_lsp_status | Return the shared in-process LSP status snapshot |
list_recent_lsp_events | Return the lower-level metadata-only recent-event ring |
Status surfaces
Section titled “Status surfaces”bmo config show-lspis a detached config-only read. It shows config-driven enablement and readiness projection, but it does not claim access to another runtime’s live LSP ring.- Live in-process status is available through TUI
/lspand agent toolget_lsp_status. list_recent_lsp_eventsremains the lower-level metadata-only event export.
Auto-LSP
Section titled “Auto-LSP”By default, BMO automatically detects root markers (e.g. go.mod, package.json, Cargo.toml) and starts the appropriate language server. Disable this with:
[options]auto_lsp = falseRipple Impact Analysis
Section titled “Ripple Impact Analysis”After each write, edit, or multiedit, BMO calls lsp_ripple_impact to find files that reference the changed symbols. The agent receives a ranked list of potentially affected files and can proactively inspect and update them.
This surfaces cross-file breakages before the build fails.
Debug mode
Section titled “Debug mode”Enable verbose LSP logging in config:
[options]debug_lsp = true