Skip to content

Getting Started

Terminal window
# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/standardbeagle/lci-cpp/main/install.sh | sh
Terminal window
# Windows (PowerShell)
irm https://raw.githubusercontent.com/standardbeagle/lci-cpp/main/install.ps1 | iex

Both detect your OS/arch, download the matching release binary, and install it (/usr/local/bin or ~/.local/bin on Unix; %LOCALAPPDATA%\Programs\lci on Windows). Override with LCI_PREFIX; pin a version with LCI_VERSION=0.10.1.

Terminal window
lci update # self-update to the latest release
lci update --check # report current vs latest without installing
lci update --version 0.10.1 # install a specific release

lci update works regardless of how lci was installed. Package-manager users can also run npm update -g @standardbeagle/lci or uv tool upgrade lci-cli.

Toolchain: GCC 13+ or Clang 17+, CMake 3.25+, vcpkg, Ninja.

Terminal window
cmake --preset release \
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
cmake --build build/release --parallel
./build/release/src/lci --version

Install and package the build:

Terminal window
cd build/release
sudo cmake --install .
cpack -G TGZ # produces lci-0.10.1-Linux.tar.gz
cpack -G DEB # produces lci-0.10.1-Linux.deb

The CPack output contains only bin/lci. Tree-sitter grammars are statically linked; the binary dynamically links libc, libstdc++, libssl (via libcrypto), zlib, and brotli — the Debian package declares only libc6 (>= 2.35) since the rest ship on modern Linux by default.

Terminal window
cmake --build build/release --parallel
ctest --preset release --parallel $(nproc)

The preset excludes the separately gated benchmark target. Run ./build/release/tests/lci_benchmarks explicitly for performance checks.

Terminal window
lci search "myFunction"

Full CLI reference: lci --help or lci <command> --help, or see CLI Usage.

.lci.kdl accepts a top-level synonyms block that widens semantic search expansion. Children are group <words…> (treat the listed words as synonyms of each other), clear <word> (drop a word from any group), and a leading clear-all (discard the built-in table before applying the rest of the block):

synonyms {
clear-all
group "get" "fetch" "retrieve"
group "delete" "remove" "del"
clear "add"
}

An unrecognized child name is a config error. Synonym expansion only applies when search’s semantic option is on (the default) and no explicit patterns were given.