Security & compliance
Rate limiting, CSP, encrypted secrets, and a sandboxed email renderer.
Inbound email HTML renders inside a fully sandboxed iframe with a DOMPurified srcdoc, so a poisoned email can't script the agent UI. Rate limits run in Redis and survive restarts. The production CSP is strict. MFA secrets and plugin signing keys are encrypted at rest.
Rate limiting
ShippingRedis-backed counters; survives restarts. 60 req/min unauth global, 600 req/min auth, 5 req/min on MFA. Per-route overrides via middleware.
CSRF protection
ShippingDouble-submit cookie, intentionally bypassed for Bearer-token auth since API tokens aren't CSRF-vulnerable.
Strict Content Security Policy
ShippingProduction CSP: default-src 'self'; script-src 'self'; …. Plugin frame-src configurable for the future sandbox. HSTS in production with includeSubDomains.
File upload validation
ShippingMIME-type allowlist, extension blocklist (executables, scripts, JARs), 50 MB default cap (10 MB for guests).
Encrypted secrets at rest
ShippingAES-256-GCM via utils/encryption.rs, used for MFA TOTP secrets and the local plugin signing key. Same key path, same primitives.
Security event log
Shippingsecurity_events table + helper. Login attempts, MFA changes, password resets, invitation redemptions all recorded.
Plugin trust chain
ShippingEvery install path verifies the signature against the trust chain. Refused unless signed by Nosdesk root, a registered publisher, or the instance’s local key.
Sandboxed email rendering
ShippingEmailHtmlBody renders inbound HTML in a fully sandboxed iframe (sandbox="allow-same-origin" only, no scripts) with a DOMPurified srcdoc. vSafeHtml directive registers DOMPurify-on-set globally.
Want to see it in action?
Join the waitlist for early access, or browse the rest of the catalogue.