Ix

Understand any codebase instantly.

System intelligence for humans and AI.

Ix parses your repository into a persistent system graph of symbols, calls, imports and relationships
so you and your coding agents can query structure instead of grepping and guessing.

Stars License CI Platforms Sponsor Ix

Website · Discord · Sponsor

--- ### Kartr **[Kartr](https://www.ix-infra.com)** is an agent platform built on the same memory engine we use for Ix, extended to the sources a codebase does not contain: docs and files, email and calendar, meetings and notes, and team chat. Agents carry context across all of them. Kartr is in alpha and onboarding early users.

Sign up for the Kartr alpha

--- ### Try Ix ```bash curl -fsSL https://ix-infra.com/install.sh | sh # macOS / Linux ``` On Windows, use the PowerShell installer under [Install](#install).

Ix mapping and querying a repository

```bash ix map . # build the graph for this repo ix explain AuthService # what is this, and what does it touch? ix trace user_login_flow # how does this actually flow? ix impact verify_token # what breaks if I change this? ``` The graph lives on your machine and persists between sessions. Your agent navigates it through [MCP](#integrations) instead of re-deriving your architecture from whatever fits in a prompt. --- ### Why Ix | | Without Ix | With Ix | |---|---|---| | **Finding things** | Search, read, search again | Query a structured graph | | **Architecture** | Re-derived every session | Mapped once, kept | | **Agent context** | Whole files pasted into the prompt | Bounded structural slices | | **Between sessions** | Context is lost | The graph persists | | **Relationships** | Inferred from fragments | Read from real edges | --- ### The model **Map → Structure → Retrieve → Remember** | Step | What happens | |---|---| | **Map** | `ix map .` parses the repo with tree-sitter and extracts symbols, calls and imports. | | **Structure** | Those become nodes and edges in a graph of what calls, contains and imports what. | | **Retrieve** | Commands return bounded answers about one symbol or flow, not whole files. | | **Remember** | The graph is stored locally and survives between sessions and agent runs. | --- ### How it works

Ix architecture

`ix map` parses your repository with tree-sitter, extracts symbols, calls and imports, and persists them as a graph in a local backend: ArangoDB plus the memory layer, run for you in Docker. Three clients read that graph: the `ix` CLI, the `ix mcp` server your AI clients connect to, and Compass, the visualizer `ix view` opens. The backend ships as a released Docker image; it is not built from this repo. See the [HTTP API reference](./docs/api/) for the endpoints all three clients share. --- ### Results Across our own development work, querying the graph instead of feeding files into the prompt cut token use by **30–99.7%**, varying widely with the task and the size of the repo. These are internal measurements, not a published benchmark. The mechanism is the plain part: `ix explain AuthService` returns that symbol and its immediate relationships. Answering the same question by reading the file and the files it imports costs far more, and costs it again next session. --- ### Integrations Ix ships a stdio MCP server, so any MCP-capable client can use the same graph tools. ```bash ix mcp install # detect installed clients and register `ix mcp` with each ix mcp install --dry-run # show what would change, write nothing ix mcp doctor # check each client's registration ``` `install` knows **Claude Code, Codex, Cursor, VS Code, Gemini CLI, OpenClaw and opencode**. It writes through each client's own MCP command where one exists, and never overwrites a server name it does not own. Pass `--force` to replace one, or `--host ` to limit the run. Per-client write mechanics, repair and process isolation are in [docs/mcp.md](./docs/mcp.md). To register one client by hand: ```bash codex mcp add ix-memory -- ix mcp ``` #### Agent skill [`skills/ix/`](skills/ix/SKILL.md) teaches any LLM agent to drive the CLI. It follows the [Claude Code skill format](https://code.claude.com/docs/en/skills) and the [agents.md](https://agents.md) standard, so Claude Code, Codex, Cursor and any agent that reads `~/.agents/skills` all load the same tree from their own skills directory. ```bash bash scripts/install-skill.sh # deploy to every harness found (--dry-run to preview) ``` Then ask your agent: *"Set up Ix and map this repo."* #### Native plugins Optional per-client packages, if you prefer them to `ix mcp install`: ```bash # Claude Code /plugin marketplace add ix-infrastructure/ix-claude-plugin /plugin install ix-memory # Codex curl -fsSL https://ix-infra.com/codex-install.sh | sh # OpenClaw openclaw plugins install ix-infrastructure/ix-openclaw-plugin # Gemini gemini extensions install https://github.com/ix-infrastructure/ix-gemini-plugin # OpenCode curl -fsSL https://raw.githubusercontent.com/ix-infrastructure/ix-opencode-plugin/main/install.sh | bash # Cursor curl -fsSL https://raw.githubusercontent.com/ix-infrastructure/ix-cursor-plugin/main/install.sh | bash ``` On Windows, the Codex, OpenCode and Cursor installers each have a PowerShell version at the same URL, with `.ps1` in place of `.sh`: ```powershell irm https://ix-infra.com/codex-install.ps1 | iex ``` --- ### Install **macOS / Linux** ```bash curl -fsSL https://ix-infra.com/install.sh | sh ``` **Windows**: install Node.js 22+ and Docker Desktop first, then: ```powershell irm https://ix-infra.com/install.ps1 | iex ``` Then map a repo and register your AI clients: ```bash ix map . ix mcp install ``` The installer checks for and installs anything missing: **Node.js 22+, Git, ripgrep** (powers `ix text`), and **Docker + Docker Compose** for the local backend. All you need beforehand is a terminal with `curl` or `wget`.
Platform notes and edge cases
Pre-built CLI packages are published for Apple Silicon macOS, Linux (x86-64 and arm64) and Windows x86-64. **Intel Macs** have no pre-built package. Install with Homebrew, which builds from source: ```bash brew tap ix-infrastructure/ix https://github.com/ix-infrastructure/Ix brew install ix ``` For the full list, including the endpoints the installer reaches and the directories it creates, see [docs/prerequisites.md](./docs/prerequisites.md).
**Upgrade** ```bash ix upgrade --check # see whether an update is available ix upgrade # upgrade the CLI, backend and components ``` **Uninstall** ```bash curl -fsSL https://ix-infra.com/uninstall.sh | sh # macOS / Linux ``` ```powershell irm https://ix-infra.com/uninstall.ps1 | iex # Windows ``` This removes the CLI and the backend containers along with their data. To keep the graph volume, set `IX_KEEP_DATA=1` for the script: `… | IX_KEEP_DATA=1 sh`, or `$env:IX_KEEP_DATA = "1"` before the PowerShell line. If you installed with Homebrew, run `brew uninstall ix` instead. --- ### Commands Ix talks to a local backend, so start there if a command reports `Ix backend not reachable`: ```bash ix status # is the backend reachable? ix docker start # start it (ArangoDB + memory layer) ix doctor # server, database and graph integrity ``` Set `IX_DEBUG=1` for full stack traces on any error. **Build the graph** ```bash ix map . # map this repo ix watch # re-map on change ix reset --workspace # wipe this repo's graph (asks first) ix reset # wipe every repo on the backend (--code keeps goals, plans and decisions) ``` **Understand** ```bash ix search # find an entity by name ix text # plain text search across the repo (ripgrep) ix locate # jump to a definition ix explain # what it is and what it touches ix overview # one-shot structural summary ix impact # blast radius of a change ix read # read source, by symbol or path:line-range ``` **Explore** ```bash ix trace # follow a flow up and down ix callers # what calls this ix callees # what this calls ix depends # everything that depends on this, as a tree ix imports # what this imports (ix imported-by for the reverse) ix rank --by dependents --top 10 # find the load-bearing code ix inventory --kind function # list components ix history # how an entity changed ix diff # compare two revisions ``` **Inspect the system** ```bash ix view # open the Compass visualizer ix subsystems # the architectural map saved by ix map ix stats # graph statistics ix smells # detect structural issues ``` Query commands take `--format text|json|llm`. Use `llm` when an agent reads the output. It is token-minimal and newline-delimited ([spec](./docs/llm-format.md)). Use `json` when chaining commands. Exhaustive references: **[commands](skills/ix/references/commands.md)** · **[flags](skills/ix/references/flags.md)** · **[output formats](skills/ix/references/output-formats.md)** · **[troubleshooting](skills/ix/references/troubleshooting.md)** --- ### Supported languages Symbols, calls and imports are extracted across **27 languages**: `JavaScript` `TypeScript` `Python` `Java` `C` `C++` `C#` `Go` `Ruby` `Rust` `PHP` `Kotlin` `Swift` `Scala` `R` `SAS` `Elixir` `Haskell` `Zig` `Lua` `Bash` `PowerShell` `HTML` `XML` `CSS` `HCL / Terraform` `Makefile` CUDA (`.cu` / `.cuh`) is parsed with the C++ grammar, including kernel-launch syntax (`kernel<<>>(args)`), so host-to-kernel calls appear in the graph. Python stub files (`.pyi`) are parsed as Python. Also recognized as config and data formats: `YAML` `JSON` `TOML` `SQL` `Protocol Buffers` `Dockerfile` `Markdown` `LaTeX` --- ### Contributing Issues and pull requests are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for local setup, and [SECURITY.md](SECURITY.md) to report a vulnerability.

Website · Discord · Sponsor

Licensed under Apache 2.0. ⭐ Star the repo if Ix is useful to you.