Limits and abuse controls

Wispist applies hard resource limits and bounded rate buckets before expensive work. A release may lower collection limits but cannot raise installation policy.

Resource defaults #

ResourceDefault
Collections per release32
Documents per collection1,000
Document JSON32 KiB
Live document data per site10 MiB
Draft document data per site5 MiB
List page100; maximum 250
Collections per SSE stream8
SSE streams per site and client6
SSE streams per site100
Pending events per stream128
Request envelope allowancedocument limit plus 4 KiB
Live idempotency records per namespace10,000
Retained changes per namespace10,000
Change age7 days
Idempotency retentionat least 24 hours

The document-data quota counts compact document JSON, not release files. Change and idempotency tables are separately bounded.

Initial Wispdeck rate buckets #

BucketSustainedBurst
Reads per site and client600/minute100
Mutations per site and client60/minute20
Mutations across one site300/minute60
Generated-ID creates across one site10,000/day100
All Wispist requests6,000/minute1,000

Client keys come from Wispdeck's trusted-proxy-aware address resolution. Untrusted forwarding headers are ignored.

Buckets use bounded memory and expire after inactivity. Concurrent streams use counters rather than token rates. A rejected request returns rate limited with Retry-After.

Rate limits are availability controls, not authorisation. A public shared collection remains publicly writable below the rate allowance.

See also #

Edit this page