index is a Nix monorepo in the spirit of nixpkgs and Raycast extensions: one shared definition of the software everyone here runs. Inside: packages, patched toolchains (Nix, Clippy), NixOS and Home Manager modules, VM images, and CI. It is also the default world an ix.dev VM boots: ix is the runtime, index is what runs on it.
It exists because agents now write patches faster than upstream review can absorb them. A fix that takes an agent minutes can wait months in a review queue, and some projects refuse AI-written patches outright. Here the same change lands on main today, and upstream can adopt it whenever it wants. The philosophy page has the full argument.
Patch a compiler, fix a library, tighten a lint: nothing quietly runs last year's version of anything.
Patches live next to the code that needs them. No dependency has a bus factor outside the repo.
Add a rule and every package meets it, in the same change.
Every consumer of an API lives in this repo, and agents make repo-wide refactors cheap, so an API can be correct instead of compatible.
You download binaries instead of compiling them. CI builds on the ix.dev cluster, close to 1,000 vCPUs, and pushes every closure to cache.ix.dev, prebuilt for Linux and cross-compiled for macOS.
The fastest way to get what this repo is for: short case examples, each a two-minute read with a diagram.
- Your whole team's Claude, from one flake: the agent binary, prompt, tools, permissions, and MCP servers, pinned in code.
- Add a tool once, everyone gets it: a small utility stops dying on the laptop it was born on.
- Your Mac never compiles: the Linux fleet cross-compiles macOS binaries your laptop just downloads.
- Every session becomes searchable memory: shell and agent history from every machine, one semantic index.
- CI builds each crate exactly once: the Rust workspace as a per-crate build DAG.
- A thousand agents, one Elixir kernel: agents work through supervised, fleet-federated workspaces on a runtime built for that shape.