← Back to directory
S

Sem

Community
Semantic version control on top of Git, giving AI coding agents entity-level code intelligence
Category
Dev Tools #16 of 438
Stars
★ 3.4k Very popular
Transport
stdio (local process)
Runtime
Prebuilt binary · Node.js · Docker · Rust stable
Credentials
Optional API key
License
Apache-2.0
Last commit
Tools
8
69FMRS · C

Sem is a semantic version control tool by Ataraxy Labs built on top of Git, providing entity-level diffs, impact analysis, blame, and context via tree-sitter, with support for 32 languages and several structured data formats. Its MCP server exposes 8 entity-level tools over stdio so coding agents can get deterministic dependency-graph answers without reading whole files, saving tokens. It suits developers using AI coding agents and teams needing cross-file impact analysis, but requires the sem binary to be installed and is not aimed at non-MCP clients or browser, cloud-storage, and database scenarios.

Strongest · Documentation 17/20 Weakest · Reliability 11/20

Reliability
11/20
Security and permissions
14/20
Maintenance
13/20
Documentation
17/20
Setup experience
14/20
Why each score
Reliability 11/20
The README and server.json agree: `sem mcp` is a stdio server exposing eight entity-level tools, with concrete CLI behavior, real JSON output samples, cache/index placement, and a claim of 900+ passing tests. However, the static material contains no CI workflow files and no committed test sources, so the MCP init + tools/list handshake, parameter-vs-behavior match, and the idempotent rewrite of `~/.claude/settings.json` by `sem setup` cannot be verified. The dependency surface is large (tree-sitter grammars for 30+ languages, git2, SQLite, mmap index) and the failure/recovery path for the first index build is not disclosed. Per the static calibration rule, reliability is capped at 12 without verifiable execution evidence, hence 11.
Security and permissions 14/20
Positives: telemetry is local-only by default with SEM_NO_TELEMETRY/DO_NOT_TRACK hard off, cloud queries are opt-in per repo with `sem cloud preview`, public/private distinction, `sem cloud forget`, and explicit-confirmation flows; no dangerous default delete/deploy/remote-command behavior. Deductions: there are real external surfaces (npm postinstall binary download, `sem login` GitHub device flow, cloud graph upload and warm-graph queries, `npx @ataraxy-labs/sem-skill` writing client config) whose data boundaries are described only in prose and cannot be validated statically; `sem setup` mutates global Claude Code and git integration, with backups mentioned but confirmation described loosely. No credential theft, covert exfiltration, or hardcoded secrets found, so no red line; 14.
Maintenance 13/20
Healthy activity signals: 0.16.2 in server.json alongside 0.23.x referenced in the README indicates ongoing iteration, 3337 stars with only 6 open issues, explicit Apache-2.0/MIT dual license, releases, multiple distribution channels (Homebrew, winget, Scoop, crates.io, Docker), and public cloud-consent documentation. Deductions: no verifiable commit history, release cadence, dependency-update policy, or SECURITY response channel; the server.json version and the README-referenced action/library versions diverge, suggesting loose version management; no disclosed governance or maintainer identity. Hence 13.
Documentation 17/20
Documentation is strong and layered: install paths (curl/brew/winget/scoop/npm/bun/cargo/Docker), every CLI subcommand, MCP client config examples (Claude Code and mcpServers JSON), the eight tools plus four review tools, real JSON output samples, a 32-language entity table, `.semrc`/`.gitattributes` handling, the three-phase matching algorithm, token budget with target_omitted, cache/index location, telemetry and cloud-consent flows, the GNU Parallel name-collision troubleshooting section, and licensing, with limitations disclosed. Deductions: per-tool MCP input schemas are not itemized (tool names and purposes only); version numbers disagree between server.json and the README; no troubleshooting section for MCP tool-call error codes. Hence 17.
Setup experience 14/20
Installation is very clear: one command `claude mcp add sem -- sem mcp` or an mcpServers JSON block, with `sem mcp` shipped in the main binary so no separate install is needed, plus explicit PATH/absolute-path fallback guidance and broad platform coverage (macOS/Linux/Windows; npm/bun/cargo/Docker). Deductions: the npm/bun route requires trusting a postinstall binary download and an extra `bun pm trust`; the multi-platform/multi-runtime matrix adds fragility; `sem setup` performs intrusive edits to global config and git integration; and there is no CI or reproducible install-verification evidence in the static material, so the calibration cap of 15 applies. Hence 14.

Static review · not runListed 2026-09-10

Read the FMRS scoring method →

Fit and risk

What it can accessReads local filesUses the network

Best for

  • Developers using AI coding agents who want to reduce token consumption
  • Teams that need cross-file impact analysis and entity-level diffs
  • Projects working in Git repos that want deterministic dependency-graph answers instead of grep results

Not for

  • Users who do not use an MCP client
  • Scenarios needing browser automation, cloud storage, or database access
  • Users wanting a zero-install experience: running sem mcp requires the sem binary to be installed first

Required permissions

  • Read local code repository files
  • Store a SQLite entity cache and query index on the local machine (by default under the OS cache directory; overridable with SEM_CACHE_DIR)
  • Optional: log in to sem cloud via the GitHub device flow with sem login (only needed for cloud acceleration)

Risks and side effects

  • The sem binary name conflicts with the sem binary shipped by GNU Parallel; run sem --version to check which one you are using
  • The entity cache is stored outside the repository by default under the OS cache directory, and setting SEM_CACHE_DIR can change its location
  • Cloud queries are opt-in per repo; logging in does not by itself upload a repo or send a query, but enabling cloud queries does send data to sem cloud
  • Local telemetry records command names on your own machine only and uploads nothing in that mode; opting in uploads counts, and SEM_NO_TELEMETRY=1 or DO_NOT_TRACK=1 forces the record-nothing behavior
  • Agents issue read queries against repository code, so ensure their working directory and permission scope match your expectations

Setup

Before you start

Runtime:Prebuilt binary · Node.js · Docker · Rust stable

Other optional settings (4)
SEM_CACHE_DIR optional Overrides the cache root for the SQLite entity cache and query index; defaults to the OS cache directory. Not required.
SEM_LOCAL optional Set to 1 to force local computation even when logged in to sem cloud. Not required.
SEM_NO_TELEMETRY optional Set to 1 to force recording nothing at all, regardless of telemetry mode. Not required.
DO_NOT_TRACK optional Standard do-not-track variable; set to 1 to disable all telemetry recording. Not required.
  1. Install the sem CLI: use the install script (curl -fsSL https://raw.githubusercontent.com/Ataraxy-Labs/sem/main/install.sh | sh), or install via Homebrew (brew install sem-cli), winget (winget install AtaraxyLabs.sem), Scoop (scoop install sem), npm (npm install --save-dev @ataraxy-labs/sem), cargo (cargo install sem-cli), or Docker.
  2. For a client with an mcpServers config (such as Cursor or Claude Desktop), add a server entry with command "sem" and args ["mcp"].
  3. For Claude Code, you can run claude mcp add sem -- sem mcp.
  4. If sem isn't on the agent's PATH, use the absolute path to the binary in the config.
  5. sem mcp ships in the same binary as every other command; no separate install is needed.
.mcp.json
{
  "mcpServers": {
    "sem": {
      "command": "sem",
      "args": ["mcp"]
    }
  }
}

Shown for Claude Code. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "sem": {
      "command": "sem",
      "args": [
        "mcp"
      ]
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add sem -- sem mcp

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

After adding the server config (`sem mcp`) and restarting the client, sem_entities, sem_diff, sem_impact and the other 8 tools should appear in the tool list; asking "what entity-level changes does sem_diff show right now?" proves the connection works.

Troubleshooting

  1. Run sem --version to confirm you are invoking Ataraxy Labs' sem rather than the GNU Parallel binary of the same name; on a conflict, set an alias or adjust PATH order
  2. If the agent reports it cannot find sem, use the absolute path to the sem binary in the MCP config
  3. With npm/bun installs the binary lives in node_modules/.bin/sem and can be invoked via npx sem or bunx sem; with Bun, run bun pm trust @ataraxy-labs/sem so the postinstall script can download the binary
  4. The first find/callers/refs/grep call in a repo builds the index and later calls read it directly; if caching looks wrong, check the SEM_CACHE_DIR setting
  5. If the cloud is unreachable or you are not logged in, sem computes locally and prints the same output, so no extra action is needed

Things to try

Once connected, you can ask your AI assistant things like:

  • Use sem_diff to show which functions and classes changed in my working tree.
  • Use sem_impact to show what breaks if I change authenticateUser, including affected tests.
  • Use sem_blame on src/auth.ts to tell me who last modified each function.
  • Use sem_context to give me the source of authenticateUser plus its callers and callees.

Tools 8

sem_entities read-only
List all entities under a file or directory path.
sem_diff read-only
Entity-level diff with rename detection, structural hashing, and word-level inline highlights.
sem_blame read-only
Entity-level blame showing who last modified each function, class, or method.
sem_impact read-only
Cross-file dependency graph showing what breaks if an entity changes.
sem_log read-only
Track how a single entity evolved through git history.
sem_context read-only
Token-budgeted context for LLMs: the entity, its dependencies, and its dependents.
sem_find read-only
Find where an entity is defined.
sem_grep read-only
Text search across source files with rg-compatible file:line:text output.

Use cases

Let a coding agent ask "what breaks if I change submitOrder" before editing code (sem_impact)
Request just the context needed to refactor a function, returning its source plus its callers and callees (sem_context)
Get entity-level code changes without reading whole files, saving tokens
Analyze cross-file dependencies to assess the blast radius of a change
Run entity-level blame and history tracking inside AI agent workflows

Supported clients

Claude Code
Cursor
Claude Desktop

Listed from the project's documentation, not tested by this site.

Overview

Sem is a semantic version control tool built on top of Git by Ataraxy Labs. It parses code with tree-sitter, extracts every function, method, and class as an entity, and diffs at the entity level instead of lines, so you see "function blahh was modified" instead of "lines x-y changed." It supports 32 programming languages plus structured data formats such as JSON, YAML, TOML, EDN, CSV, Markdown, and LaTeX, and offers rename and move detection, structural hashing that distinguishes cosmetic changes (whitespace, comments) from real logic changes, and fuzzy similarity matching. sem mcp starts a Model Context Protocol server over stdin/stdout that a coding agent launches in the background, exposing 8 entity-level tools: sem_entities, sem_diff, sem_blame, sem_impact, sem_log, sem_context, sem_find, and sem_grep. The server uses the stdio transport and ships in the same binary as every other command, so no separate install is needed. Local use is always free and requires no login; cloud queries are opt-in per repo, and when not logged in or when the cloud is unreachable sem computes locally and prints the exact same output.

Similar servers

Context7 80 · B

Upstash's official server providing up-to-date third-party library docs for AI coding assistants

★ 63.3k · Tools 2 Compare with this →

Source revision 2e6a47fcd35c Data synced 2026-10-19 Read the FMRS scoring method