get-tmonier/argot
ποΈ π¦ π π πͺ π§ - Guardrail that checks agent-written code against a repo's own git-history-learned patterns β flags foreign dependencies, reinvented functions, misplaced code, broken layering, and gamed tests. Exposes voicecontext (the repo's familiar imports/idioms for a file, so agents write in-voice before generating), check (score a generated hunk against the repo's patterns), and explain. 100% local, no LLM, single Rust binary. npm i -g @tmonier/argot
Quick Install
{
"mcpServers": {
"get-tmonier-argot": {
"command": "npx",
"args": [
"-y",
"get-tmonier-argot"
]
}
}
}Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.
Documentation Overview
Lint the rules you never wrote down.
AI writes the code. argot harnesses it with the one thing that canβt
hallucinate: your repoβs own history.
Statistics, not a second LLM. 100% local. It surfaces the divergence β you
decide what to accept.
argot.tmonier.com Β Β·Β Documentation Β Β·Β Evidence Β Β·Β Research log
|
|
π¬ Watch the 45-second launch film |
Start with an audit
argot audit needs no prior Argot fit or configuration. It fits a historical
base in a temporary worktree, then evaluates the surviving base-to-HEAD net
diff. Your working tree is left untouched. It is a review promptβnot a census
of who wrote code, or proof that a finding is a defect.
# macOS / Linux
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/get-tmonier/argot/releases/latest/download/argot-installer.sh | sh
cd your-repository
argot audit
Windows: powershell -c "irm https://github.com/get-tmonier/argot/releases/latest/download/argot-installer.ps1 | iex".
The npm package is also available as npm install -g @tmonier/argot.
Audit needs usable Git history and supported source. It has no fixed runtime promise. Semantic analysis may download a local code-embedding model once; see Getting started for install, offline, and fit details.
If the audit gives you a useful lead, fit the current repository and score the changes you intend to review:
argot init
argot check
check reports configured findings on the selected changeset; a clean result
does not prove the change correct or fully idiomatic. Read the
Audit,
Init and Fit, and
Check guides for the exact contracts.
What it surfaces
Type checkers ask if it compiles. argot asks if itβs yours. A clean, type-correct, well-reviewed pull request can still be foreign to the repository it lands in. These are the rules argot ships, every one of them learned from your own history rather than configured by hand:
| Rule | Group | What it flags |
|---|---|---|
foreign-import | voice | an import of a dependency the repo has never used |
unfamiliar-callee | voice | a call to a receiver or callee the repo's code never calls |
rare-tokens | voice | a token sequence statistically foreign to the repo's voice |
convention | voice | a construction that breaks a convention learned from the repo |
superseded | voice | a pattern this repo has been replacing, or declared migrated away |
redundant | semantic | a new function that duplicates one the repo already has |
misplaced | semantic | a function that looks like it belongs in another module area |
layering | architecture | an internal import that reverses the repo's layer direction |
test-deleted | integrity | a test removed while the code it exercised still exists |
test-disabled | integrity | a skip marker added, or a test gutted, as production changes |
test-weakened | integrity | assertions removed, tautologized, or loosened alongside a change |
rule-tampered | governance | a change that removes or weakens a locked rule |
Repositories add their own on top β a TOML manifest plus a sandboxed Rhai
script under .argot/rules/, with working ones to copy in
examples/rules/. No recompilation.
argot is a probabilistic review guardrail, not a correctness oracle. Each finding carries repository evidence. Treat it as a prompt to inspect and make the human decision explicitβnever as proof that the code is wrong.
Choose how to run it
The CLI is the complete, explicit changeset check. Other routes have narrower triggers and coverage; none provides a universal acceptance-time check.
| Route | Execution class | Prerequisites and coverage | Evidence status |
|---|---|---|---|
| CLI | Invoked by a user or agent | Run audit, init, or the full check; fitting is required where the command needs it. | CLI/source inventory, 2026-07-22 |
| Skills | Invoked | Six on-demand workflows for a compatible skill host; installation does not schedule commands, configure MCP, or add a hook. | Manifest/source inventory, 2026-07-22 |
| MCP | Passive | A configured client selects read-only context/check tools; a fitted repository is required for model-dependent tools. Use the CLI for a complete changeset check. | Focused test and source inspection, 2026-07-22 |
| Claude Code plugin | Automatic when configured, plus invoked/passive surfaces | Its opt-in pre-write hook, in a fitted repository, asks only when a Write, Edit, or MultiEdit introduces a foreign import. It never blocks and is not a full or end-of-turn check. | Manifest/source inspection, 2026-07-22 |
| pre-commit | Automatic when user-configured | Scores staged supported files in a fitted repository. The argot-check hook is advisory for findings; argot-check-gate is opt-in for error-severity exits. | Manifest inspection, 2026-07-22 |
| GitHub Action | Automatic when user-configured | Scores the configured ref/range in a workflow; it needs checkout history and release-download access. fail-on-hits defaults to false. | Action manifest inspection, 2026-07-22 |
Canonical setup and host details: Claude Code, other agents and MCP, and CI and pre-commit.
Evidence and limits
Current public measurements are detector-specific, not a product-wide accuracy or combined-brief claim. The approved claim manifest records:
- visible foreign-symbol fixtures: 620/637 β 97.3% across 36 corpora and 12 languages;
- layering fixtures: 264/272 β 97.1% across 25 corpora and 12 languages;
- test-integrity fixtures: 154/164 β 93.9% across 23 corpora and 12 languages.
A catch rate means little without the noise it costs, so both are published. On the same 36 corpora, the voice detectors flag 0.25% of ordinary accepted edits β and 0.00% of the hunks in newly added files, where a repository has the least to say about what belongs.
Each number has a distinct corpus, denominator, and qualifier. The combined briefing/noise result, semantic aggregate, and ordinary-repository timing are not yet measured public claims. See the benchmark methodology and sources.
Argot ships adapters for 12 languages. The five tested release targets are macOS arm64/x64, Linux x64/arm64, and Windows x64. The local analysis path uses statistical, graph, scripted, and embedding evidence; no generative or opinion-forming model decides a finding.
Fit health matters. A repository with shallow, generated, vendored, or otherwise unsuitable history may not produce a useful model. Argot is also least reliable for an incorrect choice made entirely with familiar vocabulary, masked prose, and code outside the selected range. Read Limitations before relying on a specific detector.
Reproducible authored proof

This is an authored fixture, not a wild-case corpus. Its pinned command, version, receipts, checksums, regeneration procedure, and the visualβs non-byte-stable GIF qualification are documented in the proof receipt. The image is a reproducible companion to the auditable Markdown receipt.
Privacy and open source
Argot analyzes source, history, and findings locally. The individual local core
is free, MIT-licensed open source, and requires no account or cloud service.
Argot has no default telemetry and does not upload source code. It can still
use network paths for a one-time local model download, update/version checks,
release downloads, or an explicitly configured review/update/CI integration.
Set ARGOT_OFFLINE=1 to prevent network use; semantic checks without a cached
model are then skipped with a diagnostic while other checks continue.
Read the complete privacy and security boundary, security policy, and MIT license.
Contribute
Contributions are welcome. Start with CONTRIBUTING.md, then see the product strategy for the maintained decision record and research log for evidence.
Acknowledgements
Every number argot publishes is measured against the real history of 36 open-source projects, across the twelve supported languages β fastapi, rich, faker, saleor, wagtail, scrapy, hono, ink, faker-js, excalidraw, outline, express, commander, eslint, gh-cli, hugo, ripgrep, bat, guava, junit5, powershell, jellyfin, redis, curl, rocksdb, fmt, homebrew, rubocop, laravel, composer, castle-engine, mORMot2, uos, ideU, MSEide/MSEgui, and dagster.
The benchmark would not exist without them, and we are grateful to their
maintainers and contributors. Argot vendors and redistributes none of their
code: the harness clones each repository at a pinned SHA, reads its history
locally, and ships nothing from it. Each project remains under its own license,
held by its own authors. Full list with links, and what argot does commit:
benchmarks/README.md.
