v1.0 — Source Available

Code that
thinks the same
is the same.

SIR Engine detects when two functions implement identical logic — regardless of language, variable names, or formatting. A Java function and a Python function that do the same thing produce the same hash.

Try the demo View on GitHub
25+ Languages
113+ Cloners day 1
$0 Personal use
α≡ Alpha equiv.
// Cross-language detection

Same logic.
Different language.

Strip variable names. Strip formatting. Hash what's left. Two functions with matching hashes are structurally identical — no matter what language they're written in.

Java
int findMax(int[] arr) {
  int max = arr[0];
  for (int n : arr) {
    if (n > max)
      max = n;
  }
  return max;
}
=
a3f72c8b
a3f72c8b
Python
def get_largest(items):
  biggest = items[0]
  for n in items:
    if n > biggest:
      biggest = n
  return biggest
sir scan ./my_project
Scanning 24 files across 3 languages...
147 functions found
 
3 duplicate clusters found
 
findMax [Java] → utils/Math.java:14
get_largest [Python] → helpers.py:42
findMax [Rust] → src/lib.rs:88
 
Health score: 78/100
// Alpha equivalence

How it works.

Translate
Any language gets translated to Python first using an LLM. One parser handles 25+ languages.
Canonicalize
Variable names, function names, and formatting are stripped. Only pure logical structure remains.
Hash
The canonical structure is hashed using SHA-256. Same hash means same logic — guaranteed.
Match
Every hash is compared against every other hash. Matching pairs are duplicate functions regardless of language.
Merge
Remove duplicates in one click — auto merge or choose manually. Download cleaned files instantly.
Python JavaScript TypeScript Java Rust Go C++ C C# Swift Kotlin Scala Ruby PHP Haskell Elixir Dart Julia Nim Zig R Python JavaScript TypeScript Java Rust Go C++ C C# Swift Kotlin Scala Ruby PHP Haskell Elixir Dart Julia Nim Zig R
// What's included

Everything you need.

🌐
Web App
Upload any files, scan instantly in the browser. No install required. Works with Python, JS, TS, and 25+ AI-translated languages.
CLI Tool
Run sir scan ./src from any terminal. Strict mode exits with code 1 for CI/CD pipeline integration.
🔌
VS Code Extension ↓ download
Scans your workspace as you type. Merge duplicates with a full diff preview before anything changes.
🤖
AI Translation
Uses Ollama locally (free) or Claude API for cross-language detection. Confidence scoring tells you which results to trust.
📦
Pack & Diff
Export semantic fingerprints of entire codebases as portable JSON. Compare two codebases without sharing source code.
🔒
Private by Default
Files are processed in memory and never stored. Run fully locally with Ollama — nothing leaves your machine.
// Plans

Simple pricing.

Free
$0

Everything you need for open-source and personal projects.

  • CLI tool — sir scan ./src
  • Web app (browser-based scanning)
  • VS Code extension
  • Python, JavaScript, TypeScript — native
  • GitHub Action on public repositories
  • GitHub Action on private repositories
  • AI scan in CI (Java, Go, Rust, C# + 20 more)
  • Bundle vs Bundle comparison
Try the demo
Ultra
Contact us

For teams and enterprises that need the full platform with business-grade support.

  • Everything in Pro
  • Bundle vs Bundle comparison — detect code overlap across codebases without sharing source
  • Unlimited seats, unlimited repos
  • Priority support with SLA
  • Custom integrations
  • Compliance & audit reports
Get in touch →

Start finding duplicates.

Free to try. No account required.
Upgrade for private repo CI/CD.

// Setup guide

You're licensed.
Here's how to activate.

Add your license key
Go to your private GitHub repo → Settings → Secrets and variables → Actions → New repository secret

Name: SIR_LICENSE_KEY
Value: the key from your email
Add the workflow file
In your repo, create the file .github/workflows/sir-scan.yml and paste in the workflow from here.
Push and open a PR
Commit the workflow file and open any pull request. SIR Engine will run automatically and post a comment listing any duplicate functions it finds.
Enable strict mode (optional)
In the workflow file, set SIR_STRICT: "true" to block merges until all duplicates are resolved.