LSP-backed symbol search, semantic editing, and diagnostics in a single Rust binary. No line numbers. No file parsing. The LSP is the source of truth.
Edit by symbol name, not line number. The LSP defines boundaries — no line number drift, no file corruption.
A persistent daemon keeps LSP servers alive between calls. No cold start on every query.
Tested on 76-workspace TypeScript monorepos. One LSP process per language, dynamically attaches folders.
Compact, token-efficient output designed for LLM context windows. Get the signal, not the noise.
AI Agent (krait find symbol Foo)
|
| Unix socket
v
krait daemon (per project)
+-- SQLite index + file watcher
+-- LSP Multiplexer (one server/language)
|
+-- vtsls (TypeScript)
+-- gopls (Go)
+-- rust-analyzer (Rust)
Warm query latency — daemon running, LSP fully initialized
| Project | Stack | Workspaces | find symbol | list symbols | hover | check |
|---|---|---|---|---|---|---|
| medusa | TypeScript | 76 | ~59ms | ~40ms | ~41ms | ~37ms |
| meet | TypeScript | 6 | ~40ms | ~33ms | ~46ms | ~40ms |
| WeKnora | Go | 3 | ~32ms | ~44ms | ~61ms | ~50ms |
v0.1 ships with these 5 languages. More coming in future releases.
brew tap Codestz/krait && brew install krait cargo install krait-cli