SourceAnt

Code graph

Index your code locally. Connect it to what your team knows.

SourceAnt parses your repository into files, symbols and relationships. A local graph follows your working tree. Review code is pinned to the reviewed commit. Your durable knowledge and system architecture keep their own lifecycles, then SourceAnt joins the relevant context when you or your agent asks.

Self-host free · Bring your own tools

From source to context
  1. 01Index your repository
  2. 02Follow symbols and relationships
  3. 03Retrieve the context for a change

How it gets in

Build it here, or bring SCIP

SourceAnt indexes C, C++, C#, Go, Java, JavaScript, Kotlin, PHP, Python, Ruby, Rust, TypeScript, TSX and common markup on your machine. It stores every registered repository in one local database without writing an index into each checkout.

For another language, use a SCIP indexer and load its output into the same graph. A SCIP import must name the revision it describes. Without one, SourceAnt refuses the import.

Use the bundled local indexer where it fits. Keep the language indexer you trust where it does not.

import limits, per index
Payload
500 MB
Documents
10,000
Symbols
1,000,000
Occurrences
5,000,000
Relationships
5,000,000

Past any of these the import fails rather than truncating. A half-loaded graph that looks whole is worse than one that refused.

The vocabulary

Two kinds of node, five kinds of edge

Small enough to hold in your head, which is the point. A graph you cannot predict the shape of is a graph you cannot write a query against.

Edge From To Meaning
DEFINES File Symbol The file where the symbol is declared
IMPORTS File Symbol The file brings the symbol in from somewhere else
REFERENCES File or Symbol Symbol Used here, but not declared or imported here
IMPLEMENTS Symbol Symbol One symbol satisfies another
TYPE_DEFINITION Symbol Symbol The type a symbol resolves to

A file to symbol edge is typed from the role the indexer recorded. Symbol to symbol edges come from the relationships the indexer resolved.

Every edge says where it came from

The same rule the rest of the graph follows. A relationship you cannot trace back is a relationship you cannot argue with.

revision
The commit this index describes. An import without one is refused.
indexer
Which tool produced it, and which version of that tool.
file_path
Where the occurrence sits, and the range inside that file.
symbol_roles
The raw role bits, so a reader can check how an edge was typed.

Reading it

Search

Filter by label, by properties, or by known ids, a page at a time. Up to a hundred nodes in a page.

Traverse

Up to a hundred starting points, five hops deep, inbound or outbound, capped at a hundred nodes. Symbol chains run longer than system ones, so this goes deeper than the system graph does.

It tells you when it stopped

A traversal that hit its cap comes back marked, so a partial answer is never mistaken for a complete one.

What it is for

Checking a claim before it is posted

A review that says a symbol is unused can be held against the graph rather than trusted. When there is no index, the same evidence is parsed straight out of the changed files instead.

Filling a context pack

The symbols a change touches go to your assistant with the decisions, the neighbouring systems and the contracts, in one bounded answer.

Local code stays local

A local index describes your working tree. A review reads code at the commit under review. SourceAnt keeps those scopes apart, so a review cannot cite an uncommitted symbol from your machine. Local knowledge is used only for reviews on that same local instance.

Code facts with the context around them

Search symbols, follow relationships and retrieve the decisions and system parts that matter to the work in front of you.