How trailofbits/trailmark works
Trailmark parses source code into a graph of code units, relationships, and annotations, indexes that graph for traversal, then exposes queries and exports for security analysis. The README documents language coverage and analysis features; sampled parser excerpts confirm AST extraction, while the exact wiring of several unsampled orchestration and analysis modules is not established, so those links are omitted.
Main entry points: api.py QueryEngine · graph.py CodeGraph model · parsers Language parsers · cli.py CLI
Components 19
Source parsing
- Parse orchestration
src/trailmark/parse.py - Language parsers
src/trailmark/parsers - Custom grammars
src/trailmark/tree_sitter_custom
Graph model and index
- CodeGraph model
src/trailmark/models/graph.py - Code units
src/trailmark/models/nodes.py - Code edges
src/trailmark/models/edges.py - Annotations
src/trailmark/models/annotations.py - GraphStore
src/trailmark/storage/graph_store.py
Security analysis
- Pre-analysis
src/trailmark/analysis/preanalysis.py - Entrypoints
src/trailmark/analysis/entrypoints.py - Finding augmentation
src/trailmark/analysis/augment.py - Binary augmentation
src/trailmark/analysis/binary.py - Graph diff
src/trailmark/analysis/diff.py
User interface
- CLI
src/trailmark/cli.py - QueryEngine
src/trailmark/query/api.py - Diagram output
src/trailmark/diagram.py
Other components
- Source files
- Engineer
- JSON / summaries
Connections 19
- Engineer → CLI: runs
- Source files → Parse orchestration: provides files
- CLI → Parse orchestration: invokes
- Parse orchestration → Language parsers: dispatches parsing
- Language parsers → Custom grammars: uses grammar
- Language parsers → CodeGraph model: builds graph
- CodeGraph model → Code units: stores units
- CodeGraph model → Code edges: stores relations
- CodeGraph model → Annotations: stores annotations
- CodeGraph model → GraphStore: loads graph
- QueryEngine → GraphStore: traverses index
- QueryEngine → Pre-analysis: runs passes
- QueryEngine → Entrypoints: detects entrypoints
- QueryEngine → Finding augmentation: merges findings
- QueryEngine → Binary augmentation: merges binary graph
- QueryEngine → Graph diff: compares graphs
- QueryEngine → Diagram output: renders graph
- CLI → QueryEngine: queries graph
- QueryEngine → JSON / summaries: exports results