Managed components
Vixl downloads a catalog of language servers, and runs CodeGraph via npx. PATH-only catalog rows are not downloaded. Project-local linters have no managed installer. How to use language servers in the editor: Language servers. How the graph is used in chat: Code graphs.
CodeGraph
Package: @colbymchenry/codegraph (unpinned; npx fetches current).
When you activate a project, Vixl starts CodeGraph for that root. If codegraph.db is missing it runs npx -y @colbymchenry/codegraph init. Rebuild from the Graph tab runs index --force. The MCP server is npx -y @colbymchenry/codegraph serve --mcp --path {root}. Indexes live under personal .vixl/graphs/{sha256}/ (codegraph.db, meta.json, _preload.cjs), never in the repo. The folder name is the SHA-256 hex of the canonical absolute project root.
Vixl sets CODEGRAPH_TELEMETRY=0 so the package's own telemetry is off. It also sets CODEGRAPH_NO_UPDATE_CHECK=1. This is the only telemetry-related string in the app. See Privacy.
There is no settings.json key to disable CodeGraph. It starts again the next time you activate the project. You can delete a stored index from Settings > Graphs (the next activate runs init again). Stop from the chat graph chip lasts until the next activate. A user codegraph entry in mcp.json is stripped.
Language servers Vixl installs
Installs go under personal ~/.vixl/lsp/{id}/{version}/. npm servers also use a portable Node at ~/.vixl/runtime/node/. State (enabled, disabled, command overrides) is personal lsp.json.
When you activate a project, Vixl prefetches the default set (TypeScript / JavaScript, JSON, YAML, Markdown) if auto-download is on. Settings > LSP, Install defaults does the same.
Install kinds: npm package, GitHub release (repo / tag / asset), HTTP archive, or go install.
npm
| Id | Packages | npm |
|---|---|---|
typescript | typescript@7.0.2 | typescript |
typescript-classic | typescript-language-server@5.3.0, typescript@5.8.2 | typescript-language-server |
json | vscode-langservers-extracted@4.10.0 | vscode-langservers-extracted |
yaml | yaml-language-server@1.17.0 | yaml-language-server |
vue | @vue/language-server@3.3.9, @vue/typescript-plugin@3.3.9, typescript@5.8.2 | @vue/language-server |
python | pyright@1.1.414 | pyright |
bash | bash-language-server@5.4.3 | bash-language-server |
html | vscode-langservers-extracted@4.10.0 | vscode-langservers-extracted |
css | vscode-langservers-extracted@4.10.0 | vscode-langservers-extracted |
tailwindcss | @tailwindcss/language-server@0.0.27 | @tailwindcss/language-server |
svelte | svelte-language-server@0.17.10 | svelte-language-server |
astro | @astrojs/language-server@2.15.4, typescript@5.8.2 | @astrojs/language-server |
prisma | @prisma/language-server@6.5.0 | @prisma/language-server |
graphql | graphql-language-service-cli@3.5.0 | graphql-language-service-cli |
dockerfile | dockerfile-language-server-nodejs@0.13.0 | dockerfile-language-server-nodejs |
php | intelephense@1.14.4 | intelephense |
typescript-classic is the Vue LS 3 hybrid install source. It is not a separate catalog row you disable. It is spawned as id typescript.
GitHub releases
| Id | Repo | Tag | Asset |
|---|---|---|---|
markdown | artempyanykh/marksman | 2026-02-08 | marksman-{target} |
rust | rust-lang/rust-analyzer | 2025-03-10 | rust-analyzer-{target}.gz |
lua | LuaLS/lua-language-server | 3.13.6 | lua-language-server-{version}-{target}.tar.gz |
clangd | clangd/clangd | 19.1.2 | clangd-{target}-{version}.zip |
toml | tamasfe/taplo | 0.9.3 | taplo-full-{target}.gz |
zig | zigtools/zls | 0.13.0 | zls-{target}.tar.xz |
kotlin | fwcd/kotlin-language-server | 1.3.13 | server.zip |
xml | redhat-developer/vscode-xml | 0.29.0 | lemminx-{target}.zip |
sql | supabase-community/postgres-language-server | 0.25.7 | postgres-language-server_{target} |
clojure | clojure-lsp/clojure-lsp | 2026.07.06-14.34.19 | clojure-lsp-native-{target}.zip |
{target} is a platform token (Rust triple, OS name, or similar, per server). {version} is the tag without extra prefix when the asset template includes it.
HTTP archives
| Id | Source |
|---|---|
terraform | HashiCorp terraform-ls 0.36.4 (terraform-ls_{version}_{target}.zip) |
java | Eclipse JDT Language Server snapshot jdt-language-server-latest.tar.gz. Needs a JDK on PATH. |
Go
| Id | Package |
|---|---|
gopls | golang.org/x/tools/gopls@v0.18.1 via go install (Go must be on PATH) |
PATH-only (not downloaded)
These catalog rows use a binary already on PATH: deno, ruby, csharp, swift, elixir, haskell, ocaml, dart, gleam, nix, r, scala.
Project-local linters eslint, oxlint, and biome have no managed installer. They require workspace trust. See settings.json (workspace.trust).
Turn language servers off
- Settings > LSP: turn off Auto-download (
lsp.autoDownload, personal). Prefetch on project activate becomes a no-op. - Environment:
VIXL_DISABLE_LSP_DOWNLOADset to1,true,TRUE, oryesalso skips prefetch, even if the setting is on. - Settings > LSP, or
lsp.json: disable individual servers.lsp.jsonset tofalsedisables all of them. - Uninstall a managed install from the LSP row. Files remain under
.vixl/lsp/until removed.
lsp.* cannot be overridden by a project settings.json.