Repository navigation
Mendr v0.2.2-alpha — Repository-first AI dependency audit
Pre-releasemendr v0.2.2-alpha
Why not
v0.2.0-alpha? That tag was published on 2026-08-27 against a
commit that predates theauditcommand. Re-pointing a published tag would
silently change the code under anyone who pinned it — the exact hazard this
tool warns about — so this ships asv0.2.2-alphainstead.
This is an alpha. It is offered to design partners for evaluation, not as a
stable release. v0.1.0 remains the stable line (fix-llm, watch).
What this release is
Connect your repository and mendr locates retiring AI dependencies. If you
choose to connect runtime evidence, mendr can also verify which ones are live.
No provider key is required. The entry requirement is a repository.
mendr audit .It scans TypeScript, TSX, Python and supported configuration files, finds
provider call sites and model identifiers, joins them to the deprecation
registry, and reports each finding with its location, retirement deadline,
migration evidence, and a decision:
Deprecated model dependency located
Model: gpt-4
Location: src/ai/client.ts:42 — code call site (model argument)
Retirement: deprecated — 54d left (2026-10-23)
Migration evidence: gpt-4o [registry: verified] (evidence only — not applied here)
Production usage: not measured
Reader tie-back: not proven
Decision: REVIEW REQUIRED
Status: No change applied
GitHub-native report
mendr audit . --installScaffolds a workflow that runs in your CI and maintains one issue per
repository — created on the first run, updated in place afterwards, grouping
findings into new / continuing / resolved, with the exact scanned commit and a
coverage matrix. Findings have stable semantic identities, so a reformat does not
churn the issue.
Permissions requested: contents: read and issues: write. Nothing else. The
default branch cannot be modified, no PR is opened, and nothing is ever merged.
Optional runtime evidence — four ways, none required
- OpenTelemetry —
--runtime otel.json --runtime-source otel - Your own sanitized usage export —
--runtime export.csv - Your own read-only provider key, kept in your CI/secret manager
- Gateway / Sentry / Datadog / structured app logs —
--runtime logs.csv --runtime-source gateway_logs
mendr reads only provider, model, service, environment, timestamp, request
outcome and volume. Never prompts, never responses.
Honest limits — read this before evaluating
- Live provider reconciliation has NOT been completed. The OpenAI and
Anthropic connectors are available as optional preview functionality, but their
request and cost figures have not yet been validated against a non-empty
organization's provider dashboard. Do not rely on them as measured spend or
measured usage. We are not claiming validated live-usage or spending
measurement, and this release should not be evaluated on that basis.
(The connectors were repaired against the current provider documentation in
this release — including an Anthropic endpoint path that previously returned
zero rows for every request — but repaired-against-docs is not the same as
reconciled-against-a-real-account.) - A config finding is a candidate, not a proven control. Reader tie-back
analysis does not exist yet, so mendr says "candidate selector" and keeps every
config finding review-only. - Absence of runtime evidence is not proof a model is unused. It only means
liveness is unknown, or that the connected source did not record it. - mendr never claims a general "clean" result. The four possible conclusions
areexposure_detected,no_exposure_in_completed_surfaces,inconclusive,
andaudit_failed. A skipped or failed surface stays visible and blocks any
no-exposure claim. - A located call site is a verified direct provider call site, not proof that
production runs it. Source analysis proves the call exists in the code; only
runtime evidence can show it executes. The report says "Production usage was not
measured" whenever no runtime source is connected. patchmeans ELIGIBLE, not applied. The human report renders it as
PATCH ELIGIBLE/Status: No change applied; the JSON carries
patchEligibleand an always-falsepatchApplied.- Nothing is applied. A
patchdecision means a reviewed PR is possible for a
verified Tier-A code call site — not that a change was made. There is no
auto-merge, and PR generation is a separate, gated capability. - Language coverage is TypeScript, TSX and Python. Other languages are not
analyzed, and the coverage report says so. - Provider usage reads cover chat/completions only (not embeddings, images,
audio, batch, fine-tuning). Anthropic's usage API reports no request counts.
Google/Vertex is not supported.
For design partners
One command, no credentials, on a repository you care about:
npx github:ajitheee/mendr#v0.2.2-alpha audit .What we would like to learn:
- Did it find anything you did not already know about?
- Was any finding wrong — and specifically, was anything called a call site
that is not one? - Did it MISS a retiring model you know is in the codebase?
- Is the report readable enough to act on without asking us?
- Would you connect a runtime source, and which of the four would you accept?
Everything runs locally. Nothing is uploaded, and no key is ever sent to us.