Sem: New primitive for code understanding – not LSPs, but entities on top of Git

Published: (June 6, 2026 at 04:03 PM EDT)
3 min read

Source: Hacker News

Know what changed.

    Semantic understanding on top of Git.

    Diff, blame, impact, log. Functions, not lines.
  
  copied
    $ brew install sem-cli
  



    
    
    
    

~/project

Same commit. Different lens.

    Left: what git shows you. Right: what actually happened.
  

  
    
      

git diff

diff —git a/src/auth/login.ts b/src/auth/login.ts index 4a2b1c0..8f3d2e1 100644 --- a/src/auth/login.ts +++ b/src/auth/login.ts @@ -12,6 +12,18 @@ +export function validateToken(token: string) {

  • const decoded = jwt.verify(token, SECRET);
  • if (!decoded.exp || decoded.exp < Date.now()) {
  • throw new TokenExpiredError();
  • }
  • return decoded; +}

@@ -24,8 +36,10 @@ export async function authenticateUser(

  • const user = await db.findUser(email);
  • if (!user) return null;
  • const user = await db.findUser(email);
  • if (!user) throw new UserNotFoundError();
  • await rateLimiter.check(email); @@ -45,12 +59,0 @@ -export function legacyAuth(user, pass) {
  • return db.query(‘SELECT * FROM users
  • WHERE email = ? AND password = ?’,
  • [user, pass]); -}

sem diff

┌─ src/auth/login.ts ──────────────── │ │ ⊕ function validateToken [added] │ ∆ function authenticateUser [modified] │ ⊖ function legacyAuth [deleted] │ └────────────────────────────────────

3 entities changed across 1 file

      AI agents are 2.3x more accurate when given sem output vs raw line diffs.
      [See the benchmark.](https://ataraxy-labs.github.io/sem/agents.html)
    




  

Six commands. One binary.

    Everything works in any Git repo. No config. No plugins.
  

  
    
      

sem diff

What changed? Entity-level diffs with rename detection, structural hashing, and word-level inline highlights.

      │  ⊕ function  validateToken    [added]

│ ∆ function authenticateUser [modified] │ ⊖ function legacyAuth [deleted]

sem blame

Who changed it? Per-entity blame showing the last commit that touched each function, class, or method.

      │  ⊕ render_inline_diff  a1a6fbf  Rohan  04-03

│ ⊕ format_terminal a1a6fbf Rohan 04-03

sem impact

What breaks? Cross-file dependency graph shows every entity that depends on a given function, plus affected tests.

      ⊕ function authenticateUser

→ depends on: db.findUser, rateLimiter ← used by: loginRoute, authMiddleware ! 42 entities transitively affected

sem log

How did it evolve? Git history for a single entity. See every commit that touched a specific function.

      │  ae576ab  Rohan  02-05  added

│ a105183 Rohan 02-08 modified (logic) │ a1a6fbf Rohan 04-03 modified (logic)

sem entities

What’s under a path? Lists every function, class, method, and type with line ranges.

      entities: src/auth/login.ts

function validateToken (L12:24) function authenticateUser (L26:45) interface AuthConfig (L47:52)

sem context

Smart context for AI. Token-budgeted context window: the entity, its dependencies, and dependents. Fits in any LLM prompt.

      context for authenticateUser (budget: 8000)

target: ~705 tokens dependencies: ~256 tokens dependents: ~812 tokens

    All commands support `--json` for machine-readable output.
    [Full reference.](https://ataraxy-labs.github.io/sem/details.html)
  




  

Your stack. Covered.

    26 languages. 5 data formats. One binary.
  

  
    

TypeScript

JavaScript

Python

Go

Rust

Java

C

C++

C#

Ruby

PHP

Swift

Kotlin

Elixir

Bash

HCL

Fortran

Vue

Svelte

XML

ERB

Dart

Perl

OCaml

Scala

Zig

JSON

YAML

TOML

CSV

Markdown

    8ms
      typical diff
    
    26
      languages
    
    0
      config needed
    
    4,000+
      downloads
    
  




  

Try it. 10 seconds.

$ brew install sem-cli $ sem setup ✓ Created wrapper script ✓ Set git config —global diff.external = sem ✓ Pre-commit hook installed

Done! Running git diff in any repo will now use sem. To revert, run: sem unsetup

      One command. Every `git diff` becomes a `sem diff`. No config files.

      Also: 
      cargo install --git https://github.com/Ataraxy-Labs/sem sem-cli
0 views
Back to Blog

Related posts

Read more »

OpenAI Submits S-1 Draft to SEC

We recently submitted a confidential S-1. We expect it to leak so we’re just announcing it. We have not decided on timing yet; it may be a while because there a...

FrontierCode

By Eric Lu, Ben Pan, Deniz Birlikci, Sam Lee, Ray Wang, Rohan Choudhury, Fermi Ma, TC Qin, Carlo Baronio, Silas Alberti, and more →acknowledgments06.08.26 Raisi...