Exograph overlaps with text search, structural search, dependence analysis, and semantic code analysis tools. The key difference is that Exograph is an Elixir-specific code fact index backed by DuckDB/QuackDB or Postgres that uses ExAST as its final structural verifier.

Overview

ToolScopeStorageQuery styleElixir AST-aware?Best for
ripgreplocal text searchnoneregex/textnofast ad-hoc text search
ExASTstructural AST matchingnone/advisory termsAST patterns/selectorsyesexact search and patching
Reachdependence analysisin-memory graph/reportsAPIs / Mix tasksyescall/data/control-flow analysis
CodeQLsemantic code analysisCodeQL databaseQL languagenot first-class Elixirsecurity analysis at scale
Sourcegraphcross-repo searchexternal indextext/structural depending setupnot Elixir-specificorganization-wide search
ExographElixir code fact indexDuckDB/QuackDB or Postgres/ParadeDBExAST + Ecto-shaped DSLyeslocal/self-hosted Elixir code intelligence; large Hex package indexing

Exograph vs ExAST

QuestionExASTExograph
What is indexed?Nothing by default; exposes advisory termsFiles, fragments, comments, symbols, references, calls
StorageSource/in-memoryDuckDB/QuackDB or Postgres
Matching authorityExASTExAST
Best forexact AST search, replace, patching, selector semanticspersisted/cross-package code intelligence
Scalescan source or caller-managed index termsquery persisted candidates, then verify with ExAST

Exograph depends on ExAST. It does not replace it.

Exograph vs Reach

QuestionReachExograph
Primary modeldependence graphnormalized code fact index
Outputmaps, checks, reports, graph queriespersisted rows and query hits
Storageanalysis-time graphDuckDB/QuackDB or Postgres
Rolesemantic extractor/analyzerstorage/query layer
Relationshipprovides call graph factspersists and queries Reach facts

Exograph started as infrastructure to run Reach and ExAST against larger codebases and package sets.

Exograph vs CodeQL

QuestionCodeQLExograph
LanguagesmanyElixir-focused
Query languageQLElixir API / Ecto-shaped DSL / ExAST selectors
DatabaseCodeQL databaseDuckDB/QuackDB or Postgres
Semantic modelCodeQL librariesExAST + Reach + normalized facts
DeploymentCodeQL CLI / GitHub Advanced Securitylocal/self-hosted Elixir library
Scaleorganization-wideindexed 21k Hex packages, 13.8M fragments, 28 min

Exograph is CodeQL-style in the sense that it indexes code facts and lets you ask semantic questions over them. It is not a CodeQL-compatible database or QL runtime.

Exograph vs Sourcegraph

Sourcegraph is an organization-wide code search product. Exograph is a library and schema for Elixir-specific code intelligence. Exograph is useful when you want local/self-hosted indexed facts and AST-verified Elixir queries rather than a general cross-language search UI.

Scale and backend benchmark references

A previous full mix exograph.index.hex --mode latest --concurrency 8 Postgres run:

MetricValue
Packages~21k
Fragments13.8M
References35M
Database size~34 GB
Time~28 minutes
Query time (structural, tuned Postgres)~78ms

Current repeated DuckDB/Postgres backend benchmark numbers are documented in Backend benchmarks. The short version: Exograph's tuned Postgres backend is slightly faster for top --limit 100 indexing, while Exograph's DuckDB backend is faster for top --limit 500 indexing and usually much faster on the measured query paths.