Finds what your app no longer uses
Unused images and dead code, oversized files, and exact duplicates. Optimise images in place, with a backup of every file it changes.
MCM CodeGuard
CodeGuard reviews your merge requests, holds every change to a quality gate, and finds the code and images your app no longer uses. It runs on your Mac, so your code stays there too.
Every feature free for 14 days, no card needed. macOS 14 or later.
Open a project once. CodeGuard keeps watch from the first scan to the merge button.
Drop in an Xcode or Gradle project. CodeGuard recognises iOS and Android on its own.
Swift, Kotlin, Obj-C, JavaQuality, security, secrets, unused code and images, all checked locally in seconds.
No uploadOptimise images in place, apply AI fixes with your own provider, or accept a finding into the baseline.
Backups keptEach merge request gets a quality gate and inline comments on the lines that need care.
GitHub and GitLabPoint CodeGuard at a merge request on GitLab or a pull request on GitHub. Comments are posted in your name, from your own account.
CodeGuard fetches the diff, not the whole repository, and checks the lines this merge request adds.
Quality, security, and secret rules run on the change. A force unwrap on line 42 fails the quality gate.
An inline comment lands on the exact line with a suggested change your teammate can apply in one click.
From the first scan to the merge button, CodeGuard covers the checks your team runs by hand today.
Unused images and dead code, oversized files, and exact duplicates. Optimise images in place, with a backup of every file it changes.
Rules and accepted findings live in a .codeguard folder in your repository. Commit it once and everyone works from the same rules.
Catches risky code and leaked keys in source, XML, property lists, and .strings files before they reach a release.
AI fixes and reviews use the provider you already pay for, or a model running on your own Mac. CodeGuard adds nothing on top.
HTML reports for people and SARIF for your other tools. Baselines let you adopt CodeGuard without fixing years of old findings first.
CodeGuard recognises an iOS project by its Xcode project or asset catalog, and an Android project by its manifest or Gradle build.
| Check | Covers |
|---|---|
| Quality rules, duplicate and dead code, complexity, hotspots, architecture | Swift, Objective-C, Kotlin, Java |
| Security and secret scanning | The same four languages, plus XML, property lists, and .strings files |
| Dependency audit | Podfile, Package.swift, build.gradle |
| Linters | SwiftLint and ktlint, when installed |
| Image size, format, and exact duplicates | Any project |
| AI merge request review | Any language, since it reads the raw diff |
Not analysed: JavaScript, TypeScript, Dart, and other stacks. For React Native and Flutter apps, CodeGuard checks the native iOS and Android parts only.
There is no CodeGuard server. Scans run locally, and there are no analytics or crash reports. The app connects to the internet only in these cases:
Start with 14 days of everything. Keep the Free plan for as long as you like.
To try it on one project
$0
DownloadFor one developer
$10 a month
Start free trialTo review merge requests
$30 a month
Start free trialFor 3 or more developers
$20 per seat a month
Start free trialEvery new install gets 14 days of Max, with no card. After that it continues on Free unless you buy a plan. Prices are in US dollars; tax is added at checkout where it applies. Refunds within 14 days.
| Feature | Free | Pro | Max | Team |
|---|---|---|---|---|
| Projects | 1 | Unlimited | Unlimited | Unlimited |
| Image optimisations | 50 a month | Unlimited | Unlimited | Unlimited |
| Scan, insights, oversized and duplicate images | Yes | Yes | Yes | Yes |
| Unused image and code detection | Yes | Yes | Yes | Yes |
| Quality rules and security scan | View only | Yes | Yes | Yes |
| SwiftLint, ktlint, git client, open in your IDE | No | Yes | Yes | Yes |
| AI fixes with your own provider | No | Yes | Yes | Yes |
| HTML and SARIF export, baselines, custom rules | No | Yes | Yes | Yes |
| GitHub and GitLab review, quality gate, inline comments | No | No | Yes | Yes |
| Architecture graph, hotspots, trends | No | No | Yes | Yes |
| Shared team rules and baseline profiles | No | No | No | Yes |
| Support | Community | Priority | Priority and onboarding |
Version 1.0 for macOS 14 Sonoma or later. Signed and notarised by Apple, and it updates itself when you allow it.
The first release is in final testing. Write to support@mcmlabs.org and we’ll email you when it’s out.
For smaller images, install pngquant and webp with Homebrew. CodeGuard uses them when they’re present.
Only when you use an AI feature, and then only to the AI provider you set up. Use a model running locally through Ollama or LM Studio and it never leaves at all. MCM Labs never receives your code.
No. Scans, rules, and the quality gate work without one. AI fixes, explanations, and AI review use the Claude CLI, an Anthropic API key, or any OpenAI-compatible provider, which you pay directly.
CodeGuard carries on as the Free plan. Nothing is charged, because the trial never asked for a card. Your projects, rules, and results stay where they are.
Yes. Scans are local. A paid licence is checked about every 14 days, and if CodeGuard can’t reach the licence server it keeps working for 30 more days.
Each seat activates CodeGuard on one Mac, for someone who works for your company. To move a seat, deactivate that Mac in the app and activate another. Team starts at 3 seats.
Cancel any time from the link in your receipt email; your plan runs until the end of the period you paid for. Ask within 14 days of your first payment, or of a yearly renewal, and we refund it in full. Refund terms.
If the response has no user, the app crashes here. Unwrap it safely and return early instead.
guard let user = response.user else { return }