Tenant isolation by default
Every workspace is its own data boundary. All D1 reads and writes are scoped to a workspaceId; cross-workspace access is blocked at the data layer and at the API.
Security
Vidsy is multi-tenant by design. Every workspace lives behind the same isolation, encryption, and access controls we use to ship to ourselves.
What we do
If you want the longer version, the production runbook and migration notes are in the app repository.
Every workspace is its own data boundary. All D1 reads and writes are scoped to a workspaceId; cross-workspace access is blocked at the data layer and at the API.
All traffic is HTTPS-only (HSTS preload). Media is stored in Cloudflare R2 with server-side encryption. Database snapshots are encrypted at rest.
Video uploads use short-lived signed PUT URLs. Webhook deliveries are HMAC-SHA256 signed — verify X-Vidsy-Signature against the raw body with the secret shown at endpoint creation.
Login, signup, public messages, and watch-page reply endpoints are rate-limited with DB-backed counters so limits hold across Worker isolates.
The app ships a strict Content-Security-Policy, X-Content-Type-Options, Referrer-Policy, and Permissions-Policy. Watch pages intentionally allow frame-ancestors so they can be embedded in your outbound surfaces.
Use a unique password, rotate API keys when team members leave, and treat your AUTH_SECRET and STRIPE_WEBHOOK_SECRET as production-only. Revoke compromised keys immediately from the Developers dashboard.
Responsible disclosure
We work with researchers and customers to fix issues quickly and credit where due.
Email security@vidsy.io with a clear description and reproduction steps.
We acknowledge within 24 hours and triage within 72 hours.
Please do not publicly disclose until we confirm a fix is in production.
Make the next touch personal