Security
Bootstrapware Chat security

Publishable vs secret keys
bsw_test_pub_/bsw_live_pub_: browser-safe for config and Hosted widget calls.bsw_test_sec_/bsw_live_sec_: server only. Never ship in client bundles orNEXT_PUBLIC_/VITE_env vars.
Dashboard login uses a user session cookie, not a secret API key in the browser. Mint and revoke stay on the Keys page. Docs: API keys.
Host-asserted user.id
Bootstrapware does not authenticate chat end users. Your host asserts an opaque stable user.id. Publishable key + forged author.id can be abused if the key leaks. Mitigate with allowed origins and optional authorToken (mint with your secret key; enable requireAuthorToken on the app). Treat client validation as UX, not a trust boundary.
Guide: host-asserted identity.
Origins and CORS
Browser calls to the Chat API are subject to per-app allowedOrigins on published config. Production should list the exact origins that embed the widget. This is not a substitute for keeping secret keys off the client. See origins.
BYO vs Hosted data path
- BYO: message bodies and files never touch Bootstrapware. Your adapter hits your API. Enforce authz from the signed-in session.
- Hosted: messages and files are stored on Bootstrapware. You moderate; you own content decisions. Cancel Hosted: freeze writes immediately; JSON export for 30 days; then delete.
MCP boundary
MCP configures apps only (list_apps, draft, publish, get_install_snippet, …). Never send message body or file bytes through MCP tools. Prefer OAuth Connect over putting secret keys in mcp.json.
Webhook signing
Deliveries POST JSON and sign the raw body with HMAC-SHA256. Verify header X-Bootstrapware-Signature (hex digest) using your endpoint secret. Payloads carry identifiers, not bodies or file bytes. See webhooks guide.
Hosted files
Allowlist types, 10 MB each, workspace cap with upload freeze. No virus scanning. You moderate. Details: attachments.
What Bootstrapware cannot access (BYO / local)
- Message body and file bytes on BYO or local adapter
- Your database
- Your application session cookies (unless you send them yourself)
- End-user passwords or OAuth tokens for your product login