
clice.io
A language server on the surface, a real-time compilation scheduler underneath. It drives Clang over your whole project and serves editors, linters, indexers and agents from the same engine.

Compiles, indexes and answers queries for a whole project from one multi-process scheduler. The LSP is its first consumer; lint, index, query and doc follow.

Hooks every process a build spawns to capture commands, generate compile_commands.json from any build system, profile the build and patch invocations.

The infrastructure clice is built on: a coroutine runtime over libuv, compile-time reflection, attribute-driven codecs, typed IPC with LSP bindings, options and CLI.
Isn’t clangd good enough?
1A file with several compile commands, a header that only makes sense inside its includer, a Clang crash taking the whole server down: clangd has carried these since day one.
clice answers them with compilation contexts, a multi-process design that keeps serving queries while a worker restarts, a dynamic module graph with shared PCH and PCM caches, and a pseudo-instantiator that keeps completion useful inside templates.
Why put a scheduler inside a language server?
2Clang exposes a compiler, not the act of compiling a project. The language server is only the first consumer of clice’s scheduler.
clice lint, index, query, doc and format run on the same engine, and a cross-TU cache lets them skip the work clang-tidy repeats for every header.
Can I use it today?
3The binary ships inside the VS Code extension for Windows, Linux and macOS on x64 and arm64. Nightlies roll out every day, and Neovim and Zed have first-party clients too.