Get started

Indexed in the time it takes to pour a coffee

One binary, no cloud required, nothing to configure. Your agent gets its senses in three steps.

Install the binary

rql is a single self-contained binary — no runtime, no containers, no GPU. It lives quietly beside your IDE.

$ curl -fsSL https://downloads.repoql.ai/latest/install-rql.sh | bash
> irm https://downloads.repoql.ai/latest/install-rql.ps1 | iex

Connect your agent

RepoQL speaks MCP. rql install detects the agents on your machine and wires them up — or add it by hand:

$ claude mcp add repoql -- rql mcp
# ~/.codex/config.toml [mcp_servers.repoql] command = "rql" args = ["mcp"]
// .cursor/mcp.json { "mcpServers": { "repoql": { "command": "rql", "args": ["mcp"] } } }
# any MCP client — stdio transport $ rql mcp # or gRPC / CLI: rql query · read · explore

Open your repository

The first tool call your agent makes auto-launches the host. Or start it yourself and watch the codebase come alive:

$ cd your-repo && rql serve
The index builds

Classify, parse, summarize — thousands of files a minute, entirely on your machine.

The dashboard opens

The terrain shows every file arriving. The moment your agent can usefully query, it says so — in your words.

Results carry trust

Every response ends with a footer stating exactly what the index knew when it answered. Honest, or absent.

The first five minutes

What to ask while it pours

minute one

Feel the shape before opening anything — the whole tree, summarized.

read("file:///** => tree: headlines", 5000)
minute two

Ask where something lives. Explore teaches you the repo's real vocabulary.

explore(keywords="auth middleware", question="how do requests get authenticated?")
minute three

Reach for exactly one method body across the codebase — no file opened.

read("file:///src/**#symbol=*Handler.Handle => content", 2000)
minute four

Query the graph like a database — because it is one.

query("SELECT name, uri FROM Types WHERE extends = 'BaseService'")
minute five

Pull a whole other repository into the same index and keep asking.

import("github://dotnet/roslyn")