clice

June 17, 2026 · View on GitHub

C++ Standard GitHub license Actions status Documentation Ask DeepWiki Discord

A C++ language server written from scratch on LLVM/Clang, with selected components ported from clangd. clice redesigns key architectural decisions to solve long-standing problems in C++ tooling.

Why clice?

Some problems in C++ tooling require architectural changes that cannot be easily retrofitted into existing language servers. clice addresses these from the ground up:

Template intelligence — Type vec2[0]. inside a template body and get full completions. clice uses pseudo-instantiation to resolve dependent types through nested typedefs and template specializations without needing concrete type arguments. Types like std::vector<std::vector<T>>::reference resolve to std::vector<T>&, enabling completion, hover, and go-to-definition inside generic code.

Compilation context — A first-class concept in clice. For source files, switch between different compilation commands (e.g. different build configurations). For header files, switch which source file provides the including context (preprocessor state, preceding declarations). This handles non-self-contained headers and context-dependent macros naturally, with automatic context switching as you navigate.

C++20 named modules — Parallel module compilation driven by a dependency-aware compile graph with interest-counted cancellation. Pre-compiled module interfaces (BMIs) are cached across editor sessions, so reopening a project skips redundant builds. The LSP layer provides module name completion on import statements and module-aware semantic highlighting.

Getting Started

Install

Download the latest binary from the releases page, or build from source.

Platforms: Linux (x64, ARM64), macOS (x64, ARM64), Windows (x64, ARM64)

Editor Setup

EditorSetup
VS CodeInstall the clice extension from the Marketplace
NeovimAdd editors/nvim to your runtime path: vim.opt.rtp:append("/path/to/clice/editors/nvim")
ZedLoad editors/zed as a local extension
OtherAny LSP client works — point it at clice server

Project Setup

clice reads a compilation database to understand your project. For CMake:

cmake -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON

By default clice searches the workspace root and its immediate subdirectories (e.g. build/) for compile_commands.json. See configuration for custom paths and other build systems.

Note

clice is approaching its first stable release. Most features work well, but some edge cases remain. Bug reports via issues are welcome.

Documentation

Full docs at docs.clice.io/clice covering configuration, architecture, and the feature checklist.

Contributing

See the contribution guide or join our Discord.

pixi run build   # configure + build
pixi run test    # unit + integration + smoke tests