Skip to main content
Glama

MCP Git Sentinel πŸ›‘οΈ

CI License: MIT Python Version MCP Standard

A high-performance, zero-dependency Model Context Protocol (MCP) server engineered to solve Agent Context Economics: protecting LLM context windows from diff explosion, filtering repository noise, extracting AST semantic outlines, and intercepting accidental secret leakage before code reaches AI models.


πŸ’‘ The Thesis: Agent Context Economics

In modern autonomous software engineering, AI Coding Agents (such as OpenAI Codex, Claude Code, Cursor, and Windsurf) rely on context windows as their primary working memory. However, traditional Git was built for human terminal readers and disk storageβ€”not for token-metered neural attention windows.

This architectural mismatch creates three critical bottlenecks:

  1. The Context Explosion Dilemma: Updating a single package in package.json often dumps 10,000+ lines of lockfile diffs (package-lock.json, pnpm-lock.yaml, Cargo.lock), consuming 30,000 to 60,000 tokens in a single tool call. This causes immediate context exhaustion, slows generation, and costs dollars per query.

  2. Attention Degradation (Needle in a Haystack): When prompt context is inundated with minified bundles (.min.js), source maps (.map), and hash churn, LLMs lose sensitivity to critical business logic modifications and security regressions.

  3. The Upstream Secret Leakage Hazard: Agents analyzing unstaged code or automated PR workflows risk ingesting unmasked API keys (sk-..., ghp_..., AWS secrets) directly into model prompt logs.


Related MCP server: Ambiance MCP Server

πŸš€ The Solution: Architecture & Core Pillars

mcp-git-sentinel sits as an intelligent semantic proxy between Git and your LLM Agent:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      JSON-RPC 2.0 / stdio      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      git cli      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  AI Agent    β”‚ ◄────────────────────────────► β”‚        mcp-git-sentinel         β”‚ ◄───────────────► β”‚  Local Repo  β”‚
β”‚ (Codex/MCP)  β”‚                                β”‚ (Zero External Runtime Deps)    β”‚                   β”‚              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                                 β”‚
                                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                     β”‚                                                       β”‚
                           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
                           β”‚ Noise Suppression β”‚    β”‚ Shannon Entropy Sentinel  β”‚   β”‚  AST Semantic   β”‚
                           β”‚ 14+ Lockfile typesβ”‚    β”‚ H(X) secret calculation   β”‚   β”‚  Outline Parser β”‚
                           β”‚ Minified / Maps   β”‚    β”‚ Pattern & Masking Engine  β”‚   β”‚  Class/Def Sig  β”‚
                           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

1. AST-Aware Semantic Change Outlines

Rather than dumping 500 lines of implementation diffs, mcp-git-sentinel parses Python, TypeScript, and Go AST signatures to tell the model what changed structurally before presenting diff lines:

[CLASS] class PaymentProcessor -> [FUNC] def process(amount: float, currency: str)

2. Zero-Overhead Shannon Entropy Secret Guard

Using pure information theory mathematics, the server computes character randomness in real time: $$H(X) = -\sum_{i=1}^{n} P(x_i) \log_2 P(x_i)$$ Natural code registers between $2.0 - 3.5$. High-entropy strings ($H \ge 4.4$) and modern AI credentials (sk-proj-..., ghp_..., AWS keys) trigger an immediate 🚨 SECURITY ALERT and automatic masking before the diff ever leaves your machine.

3. In-Memory 3-Way Merge Simulation (git merge-tree)

Simulates branch compatibility in-memory without checking out branches, modifying files, or creating dirty <<<<<<< HEAD conflict markers on disk.


πŸ› οΈ MCP Tools Exposed

Tool

Description

smart_diff

Generates token-budgeted, noise-filtered diffs with AST outlines and secret leak detection.

scan_secrets

Audits unstaged/staged changes specifically for high-entropy tokens and credential leaks.

inspect_branch

Inspects current branch topology, uncommitted counts, upstream divergence, and recent commits.

detect_conflicts

In-memory 3-way merge conflict check against a target branch (e.g. main).

estimate_context_cost

Analyzes working tree modifications and breaks down token usage and noise bloat file-by-file.


⚑ Quick Start

Installation

# Clone the repository
git clone git@github.com:Sir-Lancelot-du-Lac-Dev/mcp-git-sentinel.git
cd mcp-git-sentinel

# Install in editable mode
pip install -e .

Or run directly without installation (uses only Python standard library):

python -m mcp_git_sentinel.cli

πŸ”Œ Configuration

1. Cursor / Windsurf (mcp.json)

{
  "mcpServers": {
    "git-sentinel": {
      "command": "python",
      "args": ["-m", "mcp_git_sentinel.cli"],
      "cwd": "${workspaceFolder}"
    }
  }
}

2. Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "git-sentinel": {
      "command": "python",
      "args": ["-m", "mcp_git_sentinel.cli"],
      "cwd": "/path/to/your/project"
    }
  }
}

3. OpenAI / Codex Agent CLI

codex --mcp-server "python -m mcp_git_sentinel.cli"

πŸ“Š Empirical Benchmarks: Agent Context Economics

To evaluate real-world token compression and latency overhead, mcp-git-sentinel includes a reproducible micro-benchmark (scripts/benchmark.py) simulating an enterprise repository diff: 9,070 lines (~915 KB) containing massive lockfile churn (package-lock.json), minified bundles, and core authentication services.

Metric

Raw Unfiltered Git Diff

MCP Git Sentinel (Optimized)

Compression & Efficiency

Total Lines Evaluated

9,070 lines

~120 lines (Semantic diff + AST)

~98.7% line reduction

Estimated Context Tokens

~267,814 tokens

~1,203 tokens

99.6% token savings πŸ“‰

End-to-End Latency

Baseline (I/O bound)

~127.7 ms

Sub-second edge evaluation ⚑

Peak Working Memory

N/A

3.11 MB

Negligible agent footprint 🧠

Noise Filtering

0 files

2 lockfiles/minified suppressed

100% lockfile noise filtered

Reproduce locally:

python scripts/benchmark.py

πŸ§ͺ Testing & Quality Assurance

Run the comprehensive unit test suite:

pytest -v

All 18 unit tests run in < 2.5 seconds and validate cross-platform compatibility across Ubuntu, Windows, and macOS on Python 3.10, 3.11, and 3.12.


πŸ“œ License

Distributed under the MIT License. Copyright (c) 2026 Sir-Lancelot-du-Lac-Dev.

Available Tools

5 tools
detect_conflictsA

Performs an in-memory 3-way merge simulation against a target branch to detect potential merge conflicts before merging.

NameRequiredDescriptionDefault
target_refYesTarget branch or ref to test mergeability against (e.g. 'main', 'origin/main').main

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. 'In-memory simulation' productively discloses that nothing is mutated on disk, which is real value. But it omits prerequisites (must the target ref be fetched locally?), behavior on unknown refs, and what the result contains, so the disclosure is only partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with zero redundant clauses; the purpose and the pre-merge framing land immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, non-mutating check this is close to sufficient. The one gap is that no output schema exists and the description doesn't indicate whether the tool returns a boolean, a conflict list, or per-file details, so a caller can't fully anticipate the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter at 100% schema coverage, so the schema already documents target_ref's meaning and examples. The description adds nothing parameter-specific, which matches the baseline 3 when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and mechanism (3-way merge simulation) and the concrete outcome (detect potential merge conflicts before merging), which clearly separates it from siblings like inspect_branch or smart_diff. It never names those siblings explicitly, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Before merging' implies the triggering workflow, giving an agent a usable usage cue. However, there is no explicit when-not guidance and no routing to alternatives such as smart_diff or inspect_branch for related pre-merge checks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_context_costB

Analyzes pending working tree changes and breaks down estimated LLM token consumption file-by-file.

NameRequiredDescriptionDefault
staged_onlyNoWhether to analyze only staged changes.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It implies a read-only analysis (no mutation language), and 'pending working tree changes' signals it reads the live working tree rather than commits. However, it says nothing about whether it's expensive to run, how tokens are estimated, or what the breakdown contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. Compact and easy to scan, though it borders on too terse for an analysis tool with no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one optional boolean, full schema coverage), but there is no output schema and the description doesn't describe the shape of the file-by-file breakdown or what 'estimated token consumption' entails. An agent knows enough to invoke it but not what to expect back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so staged_only is already documented. The phrase 'pending working tree changes' hints that the default scope includes unstaged work, loosely aligning with staged_only=false, but the description adds no further semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific verbs (analyzes pending working tree changes, breaks down estimated token consumption) with the level of granularity (file-by-file). It's clearly distinguishable from siblings like smart_diff or scan_secrets, though it doesn't explicitly say so.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to reach for this versus smart_diff or inspect_branch, and no mention of when the staged_only variant applies. The agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_branchA

Inspects current Git branch topology, uncommitted file counts, upstream divergence, and recent commit history.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden; 'Inspects' signals a read-only operation and the facet list tells the agent what data surfaces. However it says nothing about prerequisites (must the working directory be a Git repo?), failure behavior outside a repo, cost/latency of walking commit history, or how much history 'recent' means.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with no filler; the core action leads and the four returned facets follow as a compact list. Nothing could be cut without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully names the return categories, which is the key omission risk for a zero-param tool. What remains uncovered is environmental scope (does it need a repo path or specific checkout, how much commit history, behavior when not in a Git repo), which keeps it short of a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4 β€” there is nothing for the description to disambiguate and no schema-documented inputs to compensate for. The description correctly implies a parameterless snapshot of the current branch context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb ('Inspects') with a specific resource ('current Git branch') and enumerates exactly what facets it covers: topology, uncommitted file counts, upstream divergence, and recent commit history. That resource scope is unmistakably distinct from the siblings (smart_diff, scan_secrets, detect_conflicts, estimate_context_cost), so an agent can route without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The enumerated facets imply when the tool is useful (whenever you need a branch-state snapshot), but there is no explicit 'use this when…' guidance, no exclusions, and no mention of the sibling tools or when one of them would be the better choice. Usage is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_secretsB

Audits Git diffs for accidental API key and high-entropy secret leaks using Shannon Entropy and credential signatures.

NameRequiredDescriptionDefault
staged_onlyNoWhether to audit only staged changes (default: false).

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, yet it says nothing about whether the scan is read-only, what it does when a leak is found (report vs. block), how it behaves on large diffs, or what the findings look like. The disclosure of detection methodology (entropy + signature matching) is the only added behavioral context and is thin on its own.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with the action, target and technique in that order; no filler or redundancy. It is appropriately sized for a one-parameter scan tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description should at least indicate what a scan yields (findings list, pass/fail, exit gating) and which diff scope is examined. The technique mention gives partial coverage, but return shape and failure semantics are left entirely unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter staged_only is fully documented in the schema (100% coverage, default and meaning included), so the schema does the work. The description only says 'Git diffs' generically and never reinforces the staged-vs-working-tree distinction, so it adds no meaning beyond the schema β€” baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (audits), resource (Git diffs), target (API key and high-entropy secret leaks) and method (Shannon Entropy and credential signatures). An agent can distinguish this from siblings like smart_diff or detect_conflicts by domain, though the description never explicitly names or contrasts them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to call this (pre-commit review, CI gate, ad-hoc audit) and no mention of alternatives or when not to use it. The agent must infer the trigger condition entirely from the tool name and the word 'audits'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

smart_diffB

Generates a token-budgeted, noise-filtered semantic git diff with AST change outlines and secret leak detection.

NameRequiredDescriptionDefault
max_tokensNoStrict token ceiling for the diff output (default: 4000).
target_refNoGit revision or branch to diff against (e.g. 'HEAD~1', 'origin/main'). Defaults to working tree diff.
staged_onlyNoWhether to only diff staged files (git diff --cached).
filter_noiseNoWhether to automatically discard lockfiles and generated assets (default: true).
scan_secretsNoWhether to scan for high-entropy credentials and API keys (default: true).

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden, and it does disclose concrete traits: a strict token ceiling, noise filtering of lockfiles/generated assets, and secret scanning. However, it says nothing about the result payload structure, truncation behavior when the budget is exceeded, or failure modes for invalid refs β€” notable gaps for a tool with no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the core output type before listing modifiers; nothing is wasted. It is adjective-heavy ('token-budgeted, noise-filtered, semantic'), which costs a little readability but not correctness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All parameters are optional, so an agent can invoke the tool with no arguments and the description makes clear the defaults are sane. The main missing piece is what the returned diff/outline looks like and how it degrades past the token ceiling, which matters given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with all five parameters including defaults fully documented, so the schema does the heavy lifting. The description's phrases ('token-budgeted', 'noise-filtered', 'secret leak detection') only loosely mirror max_tokens, filter_noise, and scan_secrets without adding syntax or interaction detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Generates ... semantic git diff') and enumerates its distinctive features: token budgeting, noise filtering, AST change outlines, and secret leak detection. It stops short of distinguishing the tool from siblings like scan_secrets, whose surface the 'secret leak detection' phrase partially overlaps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use, when-not-to-use, or alternative routing guidance. An agent cannot tell from this description whether to call smart_diff or the sibling scan_secrets for a credential check, or whether estimate_context_cost is preferable for pure budget planning.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.2.0
    • First observeddetect_conflicts
    • First observedestimate_context_cost
    • First observedinspect_branch
    • First observedscan_secrets
    • First observedsmart_diff

TDQS

A3.5/5.0

Scored across 5 tools

Disambiguation3/5

Two clear overlaps muddy selection: smart_diff advertises 'secret leak detection' and 'token-budgeted' output, which is exactly what scan_secrets and estimate_context_cost do respectively. inspect_branch and detect_conflicts are distinct, but an agent must guess whether to call smart_diff or the specialized scanners.

Naming Consistency4/5

Four of five tools follow a clean verb_noun snake_case pattern (inspect_branch, scan_secrets, detect_conflicts, estimate_context_cost). smart_diff breaks the pattern with an adjective_noun form, a minor but visible deviation.

Tool Count5/5

Five tools is well-scoped for a pre-commit/pre-merge git inspection server, and each tool maps to a distinct workflow step (branch state, diff, secrets, conflicts, cost). No filler tools.

Completeness4/5

The read-only 'sentinel' surface is solidly covered: branch state, diff, secret audit, conflict simulation, and token cost. Minor gaps exist in that findings are purely diagnostic with no follow-up action (e.g. staging, ignoring paths, or diffing arbitrary commit ranges).

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Extracts minimal, relevant code context from multiple programming languages while analyzing diffs and optimizing imports to reduce token usage for AI assistants. Supports TypeScript/JavaScript, Python, Go, and Rust with token-aware caching.
    7
    6 npm
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides intelligent code context and analysis through semantic compression, AST parsing, and multi-language support. Offers 60-80% token reduction while enabling AI assistants to understand codebases through local analysis, OpenAI-enhanced insights, and GitHub repository integration.
    6
    3 npm
    3
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP file cache for AI coding agents. Re-reading an unchanged file costs ~40 tokens instead of the whole file; a changed file comes back as a diff. Adds grep, BM25 search and glob over cached files, atomic edits with dry_run, and token-budgeted batch reads. One local daemon serves every client. No API keys, no GPU. Works with Claude Code, Cursor, VS Code, Codex and OpenCode.
    14
    220 PyPI
    3
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables LLMs to efficiently read, write, and refactor code using precise AST-based operations, reducing token usage and context window waste.
    25
    34 npm
    3
    MIT