local infra for
code review agents.

Precision-first review for the coding agent you already run — Claude, Codex or OpenCode. You don’t need to pay for another agent.

Install

One line, then ask your agent to review.

Installs the engine and a local MCP server into ~/.splus, then wires up every coding agent it finds. No account, no key.

$ curl -fsSL https://splus.sh/install.sh | sh
$ claude mcp add --scope user splus -- ~/.splus/bin/splus-mcp
# Codex — ~/.codex/config.toml
[mcp_servers.splus]
command = "~/.splus/bin/splus-mcp"

# OpenCode — ~/.config/opencode/opencode.json
{ "mcp": { "splus": { "type": "local",
  "command": ["~/.splus/bin/splus-mcp"], "enabled": true } } }
then say "review my staged changes with splus".

The engine

Deterministic checks. Every finding has an anchor.

A Rust engine reads the tree-sitter AST of your diff. No inference, fully repeatable — the agent only judges what’s left.

  1. 01 diff-scoped

    Only the lines you added

    Generated, vendored, and lockfile paths are skipped. Large diffs are capped at 600 files, not crawled.

  2. 02 secrets

    Keys, tokens, credentials

    gitleaks-style rules with an entropy check, in pure Rust. No external tools, and the entropy gate drops placeholder matches.

  3. 03 complexity

    The delta, not the size

    Cognitive complexity measured before and after your change. It flags functions you made harder to read, not ones that were always big.

  4. 04 blast radius

    What a change can break

    Every caller of what you changed, across files. Compiler-grade with a SCIP index (~97%), name-and-import heuristics without. Each result shows its confidence.

  5. 05 adapters

    More tools when present

    If semgrep, ast-grep, or osv-scanner are on your PATH, splus runs them too. What’s missing is reported, not hidden.

How it runs

Your agent calls it. Locally.

  1. 01 mcp

    Five tools over a local server

    A local stdio server with five tools — review, dismiss, mute, learnings, index. No network. Your agent stays the reviewer.

  2. 02 it learns

    Dismiss once, it stays quiet

    Dismiss a finding and it stops coming back — by exact match, by rule, or by similarity. Learned per repo, in .splus-cache.

  3. 03 byo llm

    Optional, off by default

    Add a key to turn on triage (Haiku) and a deeper discovery pass (Opus) for logic bugs. Off by default; the engine needs no model.

  4. 04 local · MIT

    Nothing leaves your machine

    Runs on your checkout. No account, no telemetry, no uploads. MIT-licensed — read it, fork it, self-host it.