Limits & Retention
Khaos is local-first - you can always run evaluations locally without limits. Cloud sync and storage are subject to plan limits enforced at upload time.
Plan Comparison
Choose the plan that fits your evaluation needs:
| Feature | Free | Pro | Team | Enterprise |
|---|---|---|---|---|
| Projects | 1 | 10 | Unlimited | Unlimited |
| Monthly Runs (Cloud) | 30 | 500 | 2,500 | Custom |
| Storage | 1 GB | 10 GB | 50 GB | Custom |
| Retention | 30 days | 90 days | 1 year | Custom |
| Team Members | 1 | 1 | 25 | Unlimited |
| API Tokens | 1 | 5 | Unlimited | Unlimited |
| Baselines | 1 per project | 5 per project | Unlimited | Unlimited |
| Custom Scenarios | 3 | 25 | Unlimited | Unlimited |
| Priority Support | - | Email + Chat | Dedicated | |
| SSO/SAML | - | - | - | Yes |
See Pricing for detailed pricing information.
What Counts as a Run?
A "run" is counted when you upload evaluation results to the cloud:
- Eval runs - One run per
khaos run <agent-name> --eval X --sync - CI runs - One run per
khaos ci <agent-name> --sync
Local-only runs (without --sync) do not count against your quota.
# Does NOT count against quota (local only)
khaos run <agent-name> --eval quickstart
# Counts as 1 run (synced to cloud)
khaos run <agent-name> --eval quickstart --syncStorage Calculation
Storage is calculated based on uploaded artifacts:
- Trace files - Full execution traces with LLM events
- Metrics files - Evaluation results and scores
- Manifest files - Run metadata and provenance
- Comparison reports - Cached comparison results
Typical storage per run:
| Pack | Typical Size |
|---|---|
baseline | ~100 KB |
quickstart | ~500 KB |
full-eval | ~2-5 MB |
security | ~1-2 MB |
Retention Policies
Retention periods determine how long artifacts are stored before automatic cleanup:
| Artifact Type | Free | Pro | Team |
|---|---|---|---|
| Run traces | 30 days | 90 days | 1 year |
| Metrics history | 30 days | 90 days | 1 year |
| Comparison reports | 7 days | 30 days | 90 days |
| Baselines | Never expires | Never expires | Never expires |
khaos export <run-id>.Error Codes
When you hit a limit, Khaos returns actionable error codes:
| Error Code | HTTP Status | Meaning | Solution |
|---|---|---|---|
runs_cap | 403 | Monthly run limit exceeded | Wait for monthly reset or upgrade plan |
storage_cap | 403 | Storage quota exceeded | Delete old runs or upgrade plan |
projects_cap | 403 | Project limit reached | Delete a project or upgrade plan |
team_cap | 403 | Team member limit reached | Remove a member or upgrade plan |
plan_limit | 403 | Feature requires higher plan | Upgrade to access feature |
# Check your current usage
khaos sync --status
# Delete old runs to free storage
khaos runs delete <run-id>
# Clean up local synced runs
khaos sync --cleanupRate Limits
API endpoints have rate limits to ensure fair usage:
| Endpoint | Rate Limit |
|---|---|
| Run upload | 60/hour |
| Comparison requests | 120/hour |
| Project management | 30/hour |
| Token generation | 10/hour |
Rate limit headers are included in API responses. If you hit a rate limit, wait for the Retry-After period before retrying.
Managing Usage
Tips for staying within your plan limits:
- Use
quickstartfor development - Savefull-evalfor pre-release - Sync selectively - Only sync runs you want to keep
- Clean up regularly - Delete runs you no longer need
- Use baselines efficiently - One baseline per release milestone
- Monitor usage - Check
khaos sync --statusregularly