The senses

What your agent sees

One address grammar over everything, three depths for every file.

Addressability

Thirty grep calls, or one address

Everything is addressable. Files, symbols, line ranges, globs — one URI scheme across your repo, imported repos, and the docs themselves.

Point the same address grammar at your estate: every repo you import answers the same query, down to the line. A new CVE is one grep away from being a list of places, not a meeting.

The risk is asymmetric. A bad query costs 1,500 tokens. A good one saves 50,000.

// one call — every filesystem implementation's signatures read("file:///src/**/*.cs#symbol=*FileSystem => structure", 3000) // the index answers in 0.3s, exactly 3,000 tokens PhysicalFileSystem : IFileSystem +Task<Stream> OpenRead(RepoUri uri) +IAsyncEnumerable<FileEntry> Enumerate(GlobSpec spec) GitTreeFileSystem : IFileSystem +Task<Stream> OpenRead(RepoUri uri) · 14 more
// where does shell=True run, across everything we own? query("SELECT uri, line_number, line_content FROM grep_matches('shell=True', 'github://**/*.py', 8)") github://dotnet/aspire/eng/common/cross/install-debs.py 236 result = subprocess.run(f"{ar_tool} t {…}", check=True, shell=True, …) 250 subprocess.run(f"{ar_tool} p {…} > {tar_file_path}", check=True, shell=True) // 2 hits · every imported repo searched · line-addressed
// give your agent all of Roslyn $ rql import github://dotnet/roslyn indexed: 32,220 files · 247,930 functions · 24,392 types // same tools, same addresses — github:// instead of file://

Progressive disclosure

Same address, three depths

Every file is pre-computed at three levels — a one-line headline, its structure, its full content. The token budget decides which one you get; the address never changes.

An agent scans a thousand headlines to know what exists, narrows to twenty structures to see the shape, and reads three bodies to understand — never opening a file it didn't need.

Try the tabs. Same file, three bets.

// read("file:///src/…/Modules/Git/GitModule.cs", 40) GitModule — on-demand git via LibGit2Sharp: status, diff, blame, patches. No pre-indexing. | 550 ln
// read("… => structure", 320) GitModule : DatabaseModule +TableFunction git_status(repo_uri) +TableFunction git_diff(repo_uri, from_ref, to_ref) +TableFunction git_blame(uri, line_from, line_to) +TableFunction git_patches(uri, max_count) -Repository OpenRepository(RepoUri uri) -string ResolveWorkTree(string physicalPath)
// read("…#symbol=git_blame => content", 800) [TableFunction("git_blame")] public IEnumerable<BlameRow> GitBlame(string uri, long from, long to) { var physical = _resolver.Resolve(RepoUri.Parse(uri)); using var repo = OpenRepository(physical); var hunks = repo.Blame(physical.RelativePath, new BlameOptions { MinLine = (int)from, MaxLine = (int)to }); // one row per hunk — commit, author, when, lines …

27 format families

It reads what your repo is made of

Code, data, documents — parsed to symbols and structure, not just text. Even the PDFs.

TypeScriptPythonGoRustC++.NETJVMSwiftRubyPHPSQLdbtJSONYAMLMarkdownHTMLJinjaMermaidGraphQLTerraformCSSCSVMakeProtoPDFDOCXXLSX

Same senses, wherever it runs