← All extensions

Karia Language Server

v0.0.3 · by Karia · added 3 November 2026

Zed extension for the karia CSS language server.

Language servers

How to install

With Forge Super installed, the button above opens the app on this extension, where you press Install. Nothing is installed until you do.

You can also open the Extensions panel in the app and search for Karia Language Server. The extension's id is karia-language-server.

Don't have Forge Super yet? Download it here.

README

From the extension's repository, written by its authors and not by Mentenaz. See the source.

Karia Language Server for Zed

A Zed extension that launches karia-lsp (the CSS language server from the npm package). It registers the karia language server for CSS, TSX, TypeScript, and JavaScript. It does not add a grammar (Tree-sitter grammar); Zed's built-in language support is used as-is.

The extension ID is karia-language-server, following Zed's language server extension publishing requirements. The language server ID remains karia, so settings continue to use lsp.karia and "karia" in language_servers.

Server resolution order

The extension looks for the LSP in the following order:

  1. The lsp.karia.binary setting (path and optional arguments). If specified, that command is used as-is.
  2. node_modules/karia-lsp in the open worktree. This lets the LSP, npx karia, and CI share the version pinned by the project's lockfile.
  3. npm_install_package("karia-lsp") into the extension's own work dir. Installs the latest version using the Node bundled with Zed.

karia-lsp depends on the karia-css package, and the LSP launches the native binary inside it via binaryPath (PATH is not consulted). Node is resolved in the order: zed::node_binary_path() → which("node") → CSS_LAB_NODE.

Per-project launch configuration

You can override it in settings.json or .zed/settings.json:

{
  "lsp": {
    "karia": {
      "binary": {
        "path": "/path/to/node",
        "arguments": ["/path/to/karia/packages/karia-lsp/dist/server.js", "--stdio"]
      }
    }
  }
}

During development, pointing this at the monorepo's packages/karia-lsp/dist/server.js avoids the package install path.

Installation

  1. Install the workspace dependencies and build the LSP.

    pnpm install
    pnpm run build --filter=karia-lsp...
    
  2. In Zed, open the Command Palette (cmd-shift-p) and run zed: install dev extension.

  3. Select this editors/zed directory.

  4. Open the karia root in Zed and open a CSS file to start the LSP.

Zed's current extension API uses wasm32-wasip2. If you use rustup, Zed will provide the target. To verify manually, run:

rustup target add wasm32-wasip2
cargo check --target wasm32-wasip2

Node resolution first uses Zed's bundled Node, then node on PATH, then CSS_LAB_NODE from the Zed worktree environment. CSS_LAB_NODE can be an absolute path to the executable.

Project-local CSS server configuration

To avoid overlapping with the default CSS language server's diagnostics, add the following to karia/.zed/settings.json only when needed. This is a project setting and does not change your global Zed settings.

{
  "languages": {
    "CSS": {
      "language_servers": ["karia"]
    }
  }
}

Keep the existing TypeScript servers. To enable Karia in TSX / TypeScript / JavaScript as well, add karia to the front of each language's language_servers and put ... for the rest.

Known limitations

  • The worktree node_modules check is based on the presence of node_modules/karia-lsp/package.json.