+ iLSP is a WebSocket gateway that exposes language server protocol (LSP) + backends over a single HTTP endpoint. Editors connect via WebSocket and + receive code intelligence — completions, hover, diagnostics — for Bicep, + YAML pipelines, and Python, enriched with organisation-specific catalogs. +
+ +What is LSP
++ The Language Server Protocol + is a standard protocol between editors and language analysis tools. + An editor sends requests (go-to-definition, completion, hover) and receives + structured responses without knowing anything about the language itself. + Any editor that speaks LSP — IntelliJ, Neovim, VS Code, Helix — works + with any LSP server. +
++ iLSP wraps existing language servers (Bicep Language Server, + yaml-language-server, pylsp) and injects completion items from + internal catalogs before responses are returned to the editor. +
+ +Live status
++ Full JSON status: /health +
+ +WebSocket endpoints
+| Endpoint | Language server | Extra completions |
|---|---|---|
| wss://ilsp.i80.dk/bicep | +Bicep Language Server | +ACR module paths, versions, params | +
| wss://ilsp.i80.dk/yaml | +yaml-language-server | +AzDO task schema (254 tasks), pipeline templates | +
| wss://ilsp.i80.dk/python | +pylsp (Jedi) | +Internal PyPI package stubs | +
Editor setup
+ +Neovim — add to your LSP config (init.lua):
-- Bicep
+vim.lsp.start({{
+ name = "ilsp-bicep",
+ cmd = {{ "websocat", "wss://ilsp.i80.dk/bicep" }},
+ filetypes = {{ "bicep" }},
+}})
+
+-- YAML pipelines
+vim.lsp.start({{
+ name = "ilsp-yaml",
+ cmd = {{ "websocat", "wss://ilsp.i80.dk/yaml" }},
+ filetypes = {{ "yaml" }},
+}})
+
++ IntelliJ IDEA / Rider — install the + LSP client plugin, + then add a server under Settings → Languages & Frameworks → Language Servers: +
+Name: iLSP Bicep
+Command: websocat wss://ilsp.i80.dk/bicep
+Pattern: *.bicep
+
+Name: iLSP YAML
+Command: websocat wss://ilsp.i80.dk/yaml
+Pattern: azure-pipelines.yml, *.yaml
+
+brew install websocat or
+ cargo install websocat.
+VS Code — use the
+ LSP client
+ or configure the built-in
+ vscode-languageclient in a workspace extension, pointing
+ serverOptions.command at websocat wss://ilsp.i80.dk/bicep.
+
Updating the catalogs
++ Catalogs are baked into the Docker image at build time and can also be + refreshed at runtime without restarting. Run the sync scripts from the + iLSP repository and call the reload endpoint: +
+# Sync Bicep module catalog from ACR and push
+python3 scripts/sync_push_catalogs.py
+
+# Trigger a hot reload without container restart
+curl -X POST https://ilsp.i80.dk/reload
+
+