get_healthLABSCO SUMMARY
Cross-file reasoning, which an LSP will not give you.
get_blast_radius and get_coupling_radar answer the two questions that decide whether a change is safe: what calls this, and what has historically broken alongside it. The graph persists between sessions and updates while you type, so the answer is not from last week's index.
What it is
A Rust server that indexes every registered repository into a persistent code graph and answers structural questions across them. A file watcher keeps a volatile overlay fresh while you edit, and the config hot-reloads without a restart.
What you get
- Blast radius, call chains and transitive dependencies for a symbol — get_blast_radius, get_call_chain, trace_dependency
- Files that historically change together — get_coupling_radar
- Orientation in an unfamiliar codebase — find_anchors, list_entry_points, explore_architecture, describe_schema
- Search by meaning with local ONNX embeddings, and a flexible ops-array graph query — semantic_search, query_graph
- Code health — find_dead_code, suggest_refactor_targets, get_coverage_summary
- Explanation and context — explain_symbol, get_context_for_prompt, get_code_snippet
- Architecture reads — navigate_to_anchor, get_layered_map, compare_modules, architectural_observations
- Git state and builds — get_file_diff, get_commit_history, get_branch_status, run_build, run_tests, run_clippy
- Maintenance — sync_state, run_enrichment, export_graph_json, get_agent_strategy, get_health, install_language_server
- A Command Center dashboard served at the root of the HTTP transport
Requirements
Install the binary with the project's install script, register repositories with lain repos add, then start lain server --config ./repos.yaml. lain mcp is the single-repo stdio path and needs no repos.yaml. Semantic search wants an ONNX embedding model — the installer fetches all-MiniLM-L6-v2 with --download-model, and the docs recommend the BGE family instead.
Setup effort
One command — curl -fsSL https://raw.githubusercontent.com/spuentesp/lain/main/install.sh | bash
USE CASES
Deciding whether a change is safe
Transitive blast radius for the symbol, plus the files that have historically changed with it, before anything is edited.
Landing in a codebase you have never seen
Find the most-called stable symbols, the entry points, and a tree of modules — three calls instead of an afternoon of reading.
Understanding a build failure in context
Run the build through the server so errors come back decorated with the callers around the failing line, rather than the line alone.
Finding what can be deleted
Unreachable code with trait defaults and common names filtered out, and high-coupling low-stability nodes ranked as refactor targets.
45 tools
Listed in project docs. Your client may show a different list.
install_language_serverfind_anchorslist_entry_pointsexplore_architecturedescribe_schemaget_blast_radiusget_call_chaintrace_dependencyget_coupling_radarsemantic_searchquery_graphfind_dead_codesuggest_refactor_targetsexplain_symbolget_call_sitesget_context_depthfind_untested_functionsget_test_templateget_coverage_summaryget_context_for_promptget_code_snippetnavigate_to_anchorget_layered_mapcompare_modulesarchitectural_observationsget_file_diffget_commit_historyget_branch_statussync_staterun_enrichmentexport_graph_jsonget_agent_strategyrun_buildrun_testsrun_clippylist_reposget_repo_infoget_federation_healthsearch_orgget_cross_repo_blast_radiusget_cross_repo_blast_radius_for_repoget_server_statusget_reload_statusrequest_reloadBEFORE YOU INSTALL
What to know first
Tools you get
45 tools named in the project's documentation.
Requires
lain on PATH
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
curl -fsSL https://raw.githubusercontent.com/spuentesp/lain/main/install.sh | bashMCP Clients
Claude Code
{
"mcpServers": {
"lain": {
"command": "lain",
"args": [
"mcp"
]
}
}
}