Sync limits and caps¶
Glassy has real limits, and they are documented rather than discovered. The rule behind them: cloud carries the protection, owned carries the capability. A limit that exists to keep a shared service healthy is not a feature gate, and an appliance you own does not inherit it.
The authoritative values are published by every instance at GET /api/capabilities — in syncLane and
mcp. Prefer that over any table, including this one.
Cloud Sync¶
Cloud Sync is budgeted in cycles, not requests. One cycle is one batch of changes, either direction,
and it is identified by a single X-Glassy-Sync-Cycle header. Handshake, pull, push, acknowledgement,
state/reset calls, and binary media fetches in the same cycle share one unit. A cycle that exceeds the
per-cycle request cap answers SYNC_CYCLE_TOO_LARGE; the sender can roll a new cycle id immediately.
| Limit | Free | Paid |
|---|---|---|
| Cycles per hour | 2 | 60 |
| Max rows in one batch | 500 | 500 |
| Max bytes per item | 1 MB | 1 MB |
| Storage headroom before a write | required | required |
Additional rules on the apply path:
- Storage headroom is checked before writing (
SYNC_STORAGE_FULL). - Canonical tag envelope is enforced on notes and bookmarks (
INVALID_TAGS) — the sync lane cannot write something a first-party write would refuse. - Media is one-directional (cloud → appliance) so free sync cannot be used as a media dump.
- Direction is initiator-only. The peer publishes its contract in the
syncLanemanifest; appliances reportprotected: falsebecause they enforce none of these budgets.
MCP¶
| Surface | Free | Paid |
|---|---|---|
| MCP calls per hour (cloud) | 120 | 1,200 |
| Tool budget on your own appliance | none | none |
The appliance is the full-power lane: all 42 tools, named per-agent keys, no call budget. Cloud serves 37
tools in single-key mode with the budgets above; five tools (glassy_notify and the four review tools)
are appliance-only because the approval queue that answers them is appliance-only.
Storage¶
| Plan | Total | Per file |
|---|---|---|
| Free | 10 MB | 25 MB |
| Pro | 200 MB | 25 MB |
| Clear | 200 MB | 25 MB |
| Your own appliance | no quota | no quota |
Storage is one per-account budget covering notes, documents, voice recordings, bookmarks, and uploads. Local model caches and per-device query persistence do not count. Clear does not include more storage than Pro: the add-ons and the community are the perk.
Every refusal has a name¶
| Code | HTTP | Meaning |
|---|---|---|
SYNC_RATE_LIMITED |
429 | Cycle budget spent; honour Retry-After |
SYNC_STORAGE_FULL |
413 | No headroom on the receiving side |
SYNC_ITEM_TOO_LARGE |
413 | Item exceeds 1 MB |
SYNC_BATCH_TOO_LARGE |
413 | More than 500 rows in one batch |
SYNC_CYCLE_TOO_LARGE |
429 | More requests than one cycle permits; start a new cycle id immediately |
INVALID_TAGS |
400 | Tag envelope violated on a note or bookmark |
SYNC_NO_MEMBERSHIP |
— | Retired in v2.48; any paired account is accepted |
What is never limited¶
- Which features you can use. Every account has every ability; only publishing needs payment.
- The number of notes, bookmarks, or documents you can create — storage is the meter.
- Anything on an appliance you own: no storage quota, no MCP tool budget, and no Cloud Sync cycle budget. Item-size and batch caps still protect the apply path on every instance.
Related¶
- Cloud Sync — setup, direction, conflict policy
- The Zero Reliance Pair — a pair between two instances you own
- Self-Hosting — the uncapped lane