Limits and Quotas
This page documents all system limits and quotas in ExoVault.
Content Limits#
Memory Content#
| Field | Limit |
|---|
content (write-memory) | 1 - 100,000 characters |
content (context-checkpoint) | 1 - 1,000,000 characters |
summary (write-memory) | Max 2,000 characters |
summary (context-checkpoint) | Max 500 characters |
memoryType | 1 - 50 characters |
writeReason | Max 2,000 characters |
externalWriteId | 1 - 200 characters |
Task Content#
| Field | Limit |
|---|
title | 1 - 10,000 characters |
description | Max 100,000 characters |
doneWhen | Max 1,000 characters |
Note Content#
| Field | Limit |
|---|
| Note title | Implementation-specific |
| Note content | Implementation-specific |
Message Content#
| Field | Limit |
|---|
content | 1 - 10,240 characters |
subject | Max 200 characters |
| Field | Limit |
|---|
query | 1 - 10,000 characters |
sessionSummary | 1 - 100,000 characters |
| Field | Limit |
|---|
content (ingest-turn) | 1 - 50,000 characters |
| Field | Range |
|---|
importance | 1 - 5 (integer) |
confidence | 1 - 5 (integer) |
priority (tasks) | 1 - 5 (integer) |
priority (messages) | 1 - 5 (integer) |
| Field | Range | Default |
|---|
topK | 1 - 50 | 10 |
threshold | 0.0 - 1.0 | 0.4 (memories), 0.5 (notes) |
decayHalfLife | 1 - 365 days | 30 |
diversity | 0.0 - 1.0 | 0.7 |
Context Profile Limits#
| Field | Range | Default |
|---|
maxEpisodic | 0 - 10 | Profile-dependent |
maxFacts | 0 - 20 | Profile-dependent |
maxTasks | 0 - 10 | Profile-dependent |
maxConstraints | 0 - 20 | Profile-dependent |
maxResponseChars | 2,000 - 100,000 | 16,000 |
| Field | Range | Default |
|---|
maxHops | 1 - 5 | 2 |
maxNodes | 1 - 200 | 50 |
| Operation | Limit |
|---|
context_checkpoint memories | Max 50 per request |
| Webhook subscriptions per request | 1 event subscription per create |
| Agent messages per session_start | 5 pending messages |
| Agent messages per checkpoint | 3 pending messages |
The send-message route has per-user rate limiting to prevent message flooding. Exceeding the limit returns HTTP 429 with a retryAfter value.
There are no global per-route rate limits on most agent API routes. The primary throttling mechanism is the monthly memory quota.
When the MONTHLY_MEMORY_QUOTA environment variable is set, it enforces a monthly cap on memory units consumed:
- Checked on
write-memory and search-memories operations
- Returns HTTP 429 with
QUOTA_EXCEEDED: Memory monthly quota exceeded
- Resets at the beginning of each calendar month
- Window: first day of current month to last day of current month
Memory units are a composite metric based on:
- Embedding tokens consumed
- Operations performed
The formula for units is implementation-specific and may vary.
For self-hosted deployments, the quota is optional. Set MONTHLY_MEMORY_QUOTA to a numeric value to enable, or leave unset for unlimited usage.
| Field | Limit |
|---|
| Webhook URL | Max 2,048 characters |
| Agent key label | Max 200 characters |
| Agent ID | Max 200 characters |
| Agent Run ID | Max 200 characters |
| Model ID | Max 200 characters |
| Link label | Max 500 characters |
| Search query | Max 10,000 characters |
| Explore graph query | Max 2,000 characters |
| Setting | Default |
|---|
expiresInDays | 1 - 365 days (default: 30) |
Messages expire and are excluded from pending queries after the expiration period.
| Setting | Limit |
|---|
| Webhooks per list request | Max 100 |
| Webhook events per subscription | 1+ events required |