sem provides entity-level diffs atop Git, using tree-sitter for code entities and supports multiple languages. It offers install options, CLI commands, and AI-agent integration via MCP.
Collecting history — the radar snapshots this repo daily. The trend line appears after 3 days of data (1 so far).
What it is
sem is a semantic version control tool that works on top of Git. It parses code with tree-sitter, extracts every function, class, and method as an entity, and diffs at the entity level instead of lines. It supports 32 programming languages with full entity extraction and structured data formats. Cloud-backed queries are opt-in per repo.
How it works
sem diffs at the entity level, with rename detection, structural hashing, and word-level inline highlights. It can generate outputs in plain, json, or markdown formats. It tracks entities across commits to provide impact, blame, and logs. It stores its SQLite entity cache outside the repository by default. It can operate with local or cloud-backed graphs depending on configuration.
Getting started
Install options include:
curl -fsSL https://raw.githubusercontent.com/Ataraxy-Labs/sem/main/install.sh | sh
Or via Homebrew:
brew install sem-cli
Or via winget on Windows:
winget install AtaraxyLabs.sem
Or the npm wrapper:
npm install --save-dev @ataraxy-labs/sem
With Bun:
bun add -d @ataraxy-labs/sem
bun pm trust @ataraxy-labs/sem
To update:
sem update
Or build from source:
cargo install --git https://github.com/Ataraxy-Labs/sem sem-cli
Or run via Docker:
docker build -t sem .
docker run --rm -it -u "$(id -u):$(id -g)" -v "$(pwd):/repo" sem diff
Commands
sem supports several commands:
- sem diff
- sem impact
- sem blame
- sem log
- sem entities
- sem context
Commands operate in any Git repo with no setup required. sem stores its cache outside the repo and can override the cache root via SEM_CACHE_DIR.
Examples (selected commands from README)
# Semantic diff of working changes
sem diff
# Full impact analysis
sem impact authenticateUser
sem blame src/auth.ts
sem log authenticateUser
Use with AI agents (MCP)
sem mcp starts a Model Context Protocol server over stdin/stdout for agent integration. Example snippet:
claude mcp add sem -- sem mcp
What it parses
32 languages with full entity extraction via tree-sitter (and structured data formats like JSON, YAML, TOML, EDN, CSV, Markdown). For files with non-standard extensions, create a .semrc in the project root mapping extensions to languages. If files have no extension, language is detected from content.
Cloud acceleration
Local is free; cloud is optional. When connected, cloud can serve a warm graph for faster queries. Local remains available when cloud is unreachable.
Traction
3271 stars, 96 forks, 6 open issues, language Rust, license Apache-2.0, last push 2026-07-18






