Invariant
Semantic code analysis for the AI era
Invariant is a fast, multi-language code analysis tool that extracts structural facts from your codebase and connects to DataGrout for semantic analysis. It enables:
- Consequential analysis — What breaks if we merge this PR?
- Semantic time machine — Query code properties across commits
- Agent feedback loop — Real-time validation for AI-generated code
- Architectural governance — Encode and enforce team invariants
Read the paper · Library & docs · Live demo
Quick Start
# Build
# Initialize (bootstraps mTLS identity automatically)
# Analyze your codebase (extracts structural facts + uploads to Invariant)
# Query for issues (via DataGrout Invariant)
# Analyze a diff against a stated goal
After the first invariant init, no token or API key is needed again — the mTLS identity is persisted to ~/.conduit/ and auto-discovered on subsequent runs.
How It Works
┌───────────────────────────────────────┐
│ Invariant (local) │
│ │
│ tree-sitter AST → structural facts │
│ file scanning, ignore patterns │
└──────────────┬────────────────────────┘
│ Conduit SDK (mTLS)
↓
┌───────────────────────────────────────┐
│ DataGrout Invariant (server) │
│ │
│ semantic enrichment (LLM) │
│ consequence queries │
│ intent analysis │
│ cross-repo aggregation │
└───────────────────────────────────────┘
Invariant performs fast, local structural extraction using tree-sitter. It understands Python, Rust, TypeScript, TSX, JavaScript, Go, Elixir, and Ruby ASTs natively. Facts are uploaded to DataGrout Invariant via the Conduit SDK for server-side semantic enrichment — LLM-powered intent classification, security analysis, and consequence reasoning.
Installation
# From source
# Or run directly
Commands
invariant init
Initialize Invariant for the current repository. Bootstraps an mTLS identity on first run.
invariant lens [paths...]
Extract structural facts from code files.
invariant query <query>
Run semantic queries via DataGrout Invariant.
invariant diff
Analyze code changes for goal alignment.
invariant status
Show connection, identity, and configuration status.
Supported Languages
| Language | Parser | Extensions |
|---|---|---|
| Python | tree-sitter | .py, .pyw |
| Rust | tree-sitter | .rs |
| TypeScript | tree-sitter | .ts |
| TSX | tree-sitter | .tsx |
| JavaScript | tree-sitter | .js, .jsx |
| Go | tree-sitter | .go |
| Elixir | tree-sitter | .ex, .exs |
| Ruby | tree-sitter | .rb, .rake, .gemspec |
Architecture
invariant/
├── invariant-core/ # Library: parser, analyzer, facts, bridge
└── invariant-cli/ # CLI binary
- invariant-core — Tree-sitter parsing, AST fact extraction, Conduit SDK bridge
- invariant-cli — Command-line interface with auto-enrollment, config persistence
Development
Powered By
DataGrout AI — Intelligence Infrastructure for Autonomous Systems