Working with multiple projects, I got tired of re-explaining our complex multi-node system to LLMs. Documentation helped, but plain text is hard to search without indexing and doesn't work across projects. I built Linggen to solve this.
My Workflow: I use the Linggen VS Code extension to "init my day." It calls the Linggen MCP to load memory instantly. Linggen indexes all my docs like it’s remembering them—it is awesome. One click loads the full architectural context, removing the "cold start" problem.
The Tech:
Local-First: Rust + LanceDB. Code and embeddings stay on your machine. No accounts required.
Team Memory: Index knowledge so teammates' LLMs get context automatically.
Visual Map: See file dependencies and refactor "blast radius."
MCP-Native: Supports Cursor, Zed, and Claude Desktop.
Linggen saves me hours. I’d love to hear how you manage complex system context!
Repo: https://github.com/linggen/linggen Website: https://linggen.dev
Linggen is a local-first memory layer that gives AI persistent context across repos, docs, and time. It integrates with Cursor / Zed via MCP and keeps everything on-device.
I built this because I kept re-explaining the same context to AI across multiple projects. Happy to answer any questions.
When using Claude Desktop, it connects to Linggen via a local MCP server (localhost), so indexing and memory stay on-device. The LLM can query that local context, but Linggen doesn’t push your data to the cloud.
Claude’s web UI doesn’t support local MCP today — if it ever does, it would just be a localhost URL.
The distinction I’m trying to make is that Linggen itself doesn’t sync or store project data in the cloud; retrieval and indexing stay local, and exposure to the LLM is scoped and intentional.
In particular, I don't know which parts of my data might get sent to Claude, so even if I hope it's only a small fraction, anything could in principle be transmitted.
What it can control is the retrieval boundary: what gets selected locally and exposed to the model. If nothing is returned, nothing is sent.
If a strict zero-exfiltration setup is required, then a fully local model would indeed be the right option.
The tradeoff is simply model quality vs locality, which is why Linggen focuses on controlling retrieval rather than claiming zero data ever leaves the device. Using a local LLM is straightforward if that’s the requirement.
The key difference is that it works across projects. While working on project A, I can ask: “How does project B send messages?” and have that context retrieved and applied, without manually opening or loading docs.