Indexed
Dev

Running Locally

Clone the Indexed repository and run the CLI from source for development and contribution.

Running Locally

By the end of this guide, you will have Indexed running from source and be able to run the CLI, tests, and the MCP server using a local development install.

Prerequisites

  • Python 3.10 or later
  • uv — install with pip install uv or curl -LsSf https://astral.sh/uv/install.sh | sh
  • Git

Clone and Install

Terminal
git clone https://github.com/LennardZuendorf/indexed.git
cd indexed
uv sync

uv sync installs all dependencies into a local virtual environment. This takes a minute on the first run while it downloads the embedding model.

If you want the released CLI (not source) for local use, install the published package instead:

Terminal
uv tool install indexed-sh

Run the CLI

Use uv run to execute the CLI from the source install:

Terminal
uv run indexed --help
Usage: indexed [OPTIONS] COMMAND [ARGS]...

  Indexed — local-first indexing engine for AI agents.

Options:
  --help  Show this message and exit.

Commands:
  config  Manage Indexed configuration.
  index   Create, search, inspect, update, and delete collections.
  mcp     Start the MCP server.

All normal indexed commands work the same way — prefix them with uv run:

Terminal
uv run indexed config init
uv run indexed index create files -c test-docs -p ./docs
uv run indexed index search "hello world"

Run Tests

Terminal
uv run pytest

To run a specific test file or module:

Terminal
uv run pytest tests/test_indexing.py
uv run pytest tests/ -k "search"

MCP Client Config for Source Installs

When running from source, the MCP command changes — instead of "command": "indexed", use uv run with --directory pointing at the repository (same pattern as MCP Setup):

mcp_config.json
{
  "mcpServers": {
    "indexed": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/indexed", "indexed", "mcp", "run"]
    }
  }
}

Replace /path/to/indexed with the absolute path to your cloned repository. This launches the same subprocess as typing uv run --directory /path/to/indexed indexed mcp run in a shell.

Workspace Structure

The repository is organized as a set of packages:

PackageDescription
indexed-coreCore indexing pipeline: parsing, chunking, embedding, FAISS storage
indexed-connectorsFiles, Jira, and Confluence connector implementations
indexed-mcpMCP server implementation (tools, transports, server lifecycle)
indexed-cliCLI entrypoint and command definitions

Each package has its own pyproject.toml. uv sync at the repository root installs all of them into the same virtual environment, linked as editable installs.

What's Next