Tier Comparison
| Feature | Starter (Free) | Pro ($7/mo, $60/yr) |
|---|---|---|
| Detectors | All 11 | All 11 |
| Analyses/day | 1 | 100 |
| Analyses/month | 30 | 100 |
| Connected repositories | 1 | Unlimited |
| Repository visibility | Public only | Public and private |
| Files per scan | 1,000 | 1,000 |
| Solutions/issue | 3 | 5 |
| API access | No | Yes |
| GitHub Actions integration | Yes | Yes |
| Baseline snapshots | Yes | Yes |
| Web and CLI access | Yes | Yes |
| Export reports (Markdown/PDF) | No | Yes |
| Support | Community (GitHub issues) | Email (24-48h) |
All 11 detectors run on every tier. There is no detector-level gating between Starter and Pro — see backend/src/__tests__/tier-detector-filtering.test.ts, which asserts detector count and names stay identical across tier contexts. The real differences are scan and repository volume, private-repository access, and report export.
Detectors (same on every tier)
- N+1 Query Detector
- Inefficient Loop Detector
- Memory Leak Detector
- Large Payload Detector
- Missing Database Index Detector
- Blocking I/O Operations Detector
- ReDoS Vulnerability Detector
- Large Bundle Size Detector
- Inefficient DOM Manipulation Detector
- Missing Caching Detector
- Resource Leaks Detector
Algorithm Limits
These apply to web and API scans only. The CLI and GitHub Action run
packages/core-engine, which is pure static analysis — it detects issues but
does not generate or evolve solutions, so none of the limits below affect it.
The evolutionary solution-generation engine runs a wider search on Pro, which is why Pro solutions can be marginally stronger — this is a depth setting, not a feature gate.
| Parameter | Free | Pro |
|---|---|---|
| Population size | 10 | 15 |
| Max generations | 5 | 10 |
| Convergence threshold | 0.03 | 0.03 |
| Solutions/issue | 3 | 5 |
These three parameters are applied per analysis by CodeAnalyzer, which calls
EvolutionaryEngine.setConfig() with the tier’s values. They override the
EVO_POPULATION_SIZE, EVO_MAX_GENERATIONS, and EVO_CONVERGENCE_THRESHOLD
environment variables, so the deployed environment values for those three do
not describe what actually runs.
Evolution is also capped at 30 seconds per issue (EVO_MAX_TIME_MS), the same
on both tiers. On timeout the heuristic solutions generated in the first pass
are returned instead, so a scan never fails for this reason.
Private Repository Access
Private-repo analysis is Pro-only and enforced in three places:
backend/src/api/routes/repository.routes.ts—POST /andPUT /:idreject adding or updating a private repo whentier === 'free'.backend/src/api/routes/analysis.routes.ts—POST /repository/:repoId/analyze-githubrejects analysis of a private repo on free tier.backend/src/api/routes/user.routes.ts—PUT /github-token(needed to clone private repos) is rejected for non-Pro users.
Pro users also need a GitHub Personal Access Token configured in account settings before a private repo can be cloned and analyzed.
Configuration
Abridged — name, displayName, and maxUsers are omitted from each tier.
// backend/src/config/pricing-tiers.ts
export const PRICING_TIERS = {
free: {
price: { monthly: 0, yearly: 0 },
algorithm: {
populationSize: 10,
maxGenerations: 5,
convergenceThreshold: 0.03,
solutionsPerIssue: 3
},
analysis: {
analysesPerDay: 1,
analysesPerMonth: 30,
maxFilesPerRepo: 50,
maxReposPerAnalysis: 1,
historyRetentionDays: 7
},
api: {
enabled: false,
requestsPerDay: 0,
requestsPerMinute: 0,
webhooksEnabled: false
},
features: { privateRepos: false },
supportResponseTime: 'Community (GitHub issues)'
},
pro: {
price: { monthly: 7, yearly: 60 },
algorithm: {
populationSize: 15,
maxGenerations: 10,
convergenceThreshold: 0.03,
solutionsPerIssue: 5
},
analysis: {
analysesPerDay: 100,
analysesPerMonth: 100,
maxFilesPerRepo: 500,
maxReposPerAnalysis: -1,
historyRetentionDays: 30
},
api: {
enabled: true,
requestsPerDay: 100,
requestsPerMinute: 10,
webhooksEnabled: false
},
features: { privateRepos: true },
supportResponseTime: 'Email (24-48h)'
}
};
Note: API access is not yet on the marketing site
Pro’s api.enabled: true is real and enforced (backend/src/config/tier-limits-manager.ts, canMakeApiRequest), but it isn’t listed as a Pro perk on the landing page (apps/web/src/app/claude-redesign/landing/landing.component.ts). Worth deciding whether to surface it there or treat it as unreleased/internal for now.