Signatures and identifier lookup answer most "where is this defined, what does it take" questions without pulling whole files into the context, and semantic search covers the case where the name is unknown. The memory side is what changes across sessions: notes, tasks and a session start that reports what changed since last time, so a new chat does not begin from nothing. It stays on your machine unless you deliberately configure a model provider.
A local code-intelligence server: it builds a searchable index of a project's identifiers and signatures, keeps notes and tasks in its own database, and can receive live logs from a running program.
- An index of the project's identifiers, queried directly instead of grepping the tree, with incremental update or removal for a single file after an edit
- Signatures rather than whole files — header comments, types and method prototypes for one file or a glob of them, which is what a model needs to call something correctly
- Semantic search over embedded code, docs and workspace items for the times you know the concept but not the name
- Project orientation: an auto-detected summary of entry points, main types and languages, the indexed file tree with per-file statistics, and a browsable file listing
- Memory that outlives the chat — session notes, a session start that reports which files changed since last time, and a project summary you can write sections into
- A task backlog kept with the code: tasks created, read, updated and filtered by status
- Cross-project work: link a dependency's own index, scan a directory tree for indexed projects, register them globally, then query identifiers or signatures across all of them at once
- Persistent global guidelines stored as named values, so conventions apply across projects
- A log hub that receives output from any external program over HTTP with no SDK, so the assistant sees what the code actually did
- An interactive browser viewer for the project tree, with a settings tab for the embedding and LLM configuration
- Screenshots and window listing, for checking what an application is showing
Node.js 20 or newer. Installed globally from npm as aidex-mcp, with a setup command that registers it with your assistant. Local-first: it works fully offline on its own embeddings, and the LLM layer — query translation and reranking — is opt-in, switched on by configuring an Anthropic, OpenAI, OpenRouter, Ollama or Hugging Face key. Embeddings are enabled per project when you initialize it and cached afterwards.
One command — npm install -g aidex-mcp
