Product

One local graph. Every useful question.

Compass turns a repository into an inspectable, evidence-backed graph, then gives you the smallest surface for exploring, querying, comparing, and sharing what you found.

Install Compass

Product surfaces

Move from shape to reason without changing tools.

Start with the question in front of you. Each surface uses the same graph model, so the context you discover in one place remains useful in the next.

Code graph

Explore the relationships before you edit.

The viewer keeps a fixed layout, searchable symbols, relationship types, and source anchors in the same working set. Try a real dotenv snapshot, then open the full source line when a node earns your attention.

dotenv@17.4.2 · source graph25 nodes · 52 edges

Orient

Find communities, entry points, and the symbols that hold the system together.

Inspect

Hover a node or edge to keep identity, direction, and evidence in view.

Navigate

Open the exact source path and line instead of losing the thread in a file tree.

Artifact lineage

Four boundaries, one publishable snapshot.

Compass / visual contract
Compass source-driven pipelineCompass files move from scoped discovery to per-file evidence, resolved relationships, and one validated graph JSON snapshot. Each boundary names its owner and artifact.01Discoverscope + classify filesowner · compass-filesmanifest.json02Extractsyntax facts + anchorsowner · compass-languagesper-file facts03Resolveconnect cross-file linksowner · compass-resolvedirected edges04Publishvalidate + materializeowner · compass-graphgraph.jsonrepository scopesource evidencerelationship setatomic snapshot

From source to snapshot

The build is a visible sequence, not a black box.

Discovery, extraction, resolution, and publication each have an owner, an artifact, and a failure mode you can reason about.

per-file facts

Evidence starts close to the source.

directed links

Resolution preserves ambiguity.

validated output

Incomplete artifacts do not publish.

local boundary

Optional network work stays explicit.

Edge anatomy

A relationship is useful when it can answer follow-up questions.

Compass / visual contract
A Compass relationship with evidenceA directed calls edge connects two symbols and retains its relation, confidence, source range, and provenance.callertargetCALLS · directsource anchorsrc/checkout.rs:42provenanceextracted · parser evidencerelationship siteline 42 → line 88

The evidence contract

A relationship is a claim you can follow.

Compass keeps the useful details beside the line: what the relationship means, which direction it travels, where it appeared, and how the extractor knows about it.

stable identity

A node means the same thing across the viewer, query output, and exports.

direction + multiplicity

CALLS, IMPORTS, USES, and CONTAINS keep their direction and count.

source range

Every useful relationship can lead back to the file and line that produced it.

provenance state

Direct, inferred, unresolved, and ambiguous results stay distinguishable.

Read the provenance model

CompassQL

Ask structural questions with a contract.

CompassQL is a deterministic, bounded, read-only query surface for finding paths, relationships, and impact without inventing meaning.

impact.cql

MATCH (changed)-[:CALLS|IMPORTS_FROM*1..3]->(affected)

WHERE changed.source_file = "src/payments.rs"

RETURN affected.id, affected.source

ORDER BY affected.id

LIMIT 100

Readable input. Stable output.
deterministic ordering bounded path expansion explicit unsupported syntax JSON and JSONL output
MATCHchoose a relationship and direction
WHEREnarrow the corpus with a predicate
RETURNselect stable fields and anchors

Bounded traversal

Start at the changed symbol; keep the path visible.

Compass / visual contract
Compass impact pathA changed payment function is traversed through three directly connected symbols. Each node keeps its source path and the traversal stays within explicit depth and result limits.CALLSCALLSCALLSCHANGED SYMBOLcharge()src/payments.rs:42TARGET 01authorize()src/gateway.rs:88TARGET 02CheckoutHandlersrc/checkout.rs:17TARGET 03write_receipt()src/receipt.rs:61direction: changed → affected · depth 1..3 · max 100 results · anchors retained
boundeddepth and result limits are part of the contract
deterministicstable ordering makes output repeatable
honestunsupported or ambiguous results stay explicit
Language contract

Read the supported syntax, bounds, and diagnostics before you automate it.

Read CompassQL docs

Versioned history

Compare two code graphs, not just two source diffs.

Choose exact Git revisions, identify the immutable graph behind each one, and see the nodes, relationships, and evidence that changed.

Graph A → Graph B

Two code graphs. One explicit comparison.

Compass / visual contract
A

Graph A

Baseline

immutable

Exact commit

a83f2c

4 nodes
3 relationships

Graph A at commit a83f2cThe baseline graph has four nodes and three relationships.
B

Graph B

Current

immutable

Exact commit

f0b219

4 nodes
4 relationships

Graph B at commit f0b219The current graph has four nodes, four relationships, one added relationship, and one changed node.ADDED RELATIONSHIPCHANGED NODE
A · a83f2cB · f0b219

Exact graph identities stay attached

1 relationship added1 node changedsource evidence retained

Revision review loop

From exact commits to an anchored explanation.

revision → source anchor
  1. 01

    Select

    Choose exact parent and current revisions.

  2. 02

    Materialize

    Build or reuse each compatible realization.

  3. 03

    Compare

    Classify topology and evidence changes.

  4. 04

    Inspect

    Jump from a changed edge to its source anchor.

The contract stays visible exact revision topology + evidence immutable output

Surfaces that fit the work

Use the graph where the next decision happens.

Keep exploration in the editor, automation in CI, focused context in MCP, and artifacts portable when the graph needs to travel.

A practical first move

Give the codebase a bearing.

Install Compass locally, build one graph, and answer a question you could not answer from a file tree alone.