Stratify

Polyglot codebase intelligence

One binary. Six languages.
Six analyses.

Your repo has a Rails app, a Spring service, a Go module, and a pile of TypeScript. Each one has its own linter, its own report shape, and its own quality bar. Stratify parses all of them into one model and runs the same six analyses on every line. One gate. One report. No servers, no accounts.

Add the gate to CI

- uses: stratify-dev/stratify@v0.4.0
  with:
    fail-on: warning

Or run it locally

brew install stratify-dev/tap/stratify

How it flows

Six languages compress into one model. Six analyses read only the model, so each one is written once and works everywhere. One stream of findings fans out to every surface.

The Stratify pipeline Java, Ruby, TypeScript, Python, Go, and Rust parse into one universal intermediate representation. Six analyses read that representation: dead code, duplication, complexity, churn hotspots, dependency cycles, and layer boundaries. They produce one stream of findings, which fans out to the CLI, a GitHub Action gate, SARIF, an MCP server, an editor language server, and OpenTelemetry export. Java Ruby TypeScript Python Go Rust Universal IR symbols · references · a confidence level on every edge Dead code Duplication Complexity Hotspots Cycles Boundaries Findings rule · severity · confidence · file and line CLI CI gate SARIF MCP LSP OTel

What a run looks like

$ stratify check .

warn  Unused.java:2  unused function `neverCalled`
info  App.java:6  possibly unused function `helper`

2 finding(s).

Stratify says unused when it proved the call graph, and possibly unused when it could not. It never hides a real finding behind a guess.

Why teams run it

The six analyses

They all run in a single pass. Read the details.

Coverage today

Analysis coverage per language. Rust cycles and boundaries need module and use resolution, which is next on the roadmap.
LanguageDead codeDuplicationComplexityHotspotsCyclesBoundaries
JavaYesYesYesYesYesYes
RubyYesYesYesYesYesYes
TypeScriptYesYesYesYesYesYes
PythonYesYesYesYesYesYes
GoYesYesYesYesYesYes
RustYesYesYesYesPendingPending

Six front doors

Scan your repo now

brew install stratify-dev/tap/stratify
stratify check .

Other install methods · Source on GitHub