Security
Your data stays yours, by default
Isolation isn't a setting you turn on — it's how the platform is built. Every record is scoped to your organization, every action is governed by a role, channel secrets are encrypted, and the audit trail is always on. And nothing you upload is ever used to train a model.
How your data is protected
Tenant-isolated by default
Every database query is scoped to your organization before it runs — agents, conversations, knowledge, analytics, and credentials all live behind your org boundary. Your data is never mixed with another tenant's, and there's no shared pool to opt out of.
Role-based access control
Who can see what, and who can change it, follows roles — not guesswork. Members get a view-only seat by default; managing agents, knowledge, integrations, and billing each maps to an explicit permission, enforced on the server, not just hidden in the UI.
Encrypted channel credentials
Bot tokens, API keys, and the secrets that connect Telegram, WhatsApp, Slack, and the rest are stored encrypted — not in plain text. Connecting a channel doesn't mean handing your keys to a logbook.
Everything is audit-logged
Admin actions land in an activity feed scoped to your org — who changed an agent, who connected a channel, who updated billing, and when. When something changes, there's always a record of who did it.
Read-only roles for safe oversight
Give analysts, auditors, or stakeholders a seat that can read dashboards and conversations without the power to edit, delete, or take over. The same boundary applies to Saba: it only ever sees what the person asking is already allowed to see.
Never trained on your data
Your documents, conversations, and configuration are used to run your agents — and nothing else. We do not train models on your data, and you can have it wiped on request.
How isolation is enforced
Security isn't a feature you configure after the fact — it's applied on every request. Identity resolves to your organization, the boundary is enforced on each query, the action is permission-checked, and the result is recorded.
Authenticate the request
Every call carries an authenticated identity. The org it belongs to is taken from that identity — never from anything the client can set — so a request can't reach across into another organization's data.
Scope to your organization
Before any read or write runs, it's filtered by your org boundary. Data access is tenant-aware at the data layer, so isolation holds even if a higher layer slips.
Check the permission
Write actions are checked against the caller's role first. A member can't mutate what only a manager may change — the server rejects it regardless of what the interface shows.
Encrypt the secrets
Channel credentials and connection secrets are encrypted at rest, so the keys that link your bots stay protected even inside the platform.
Record the action
The change is written to your organization's audit trail, giving you a who-and-when record of every administrative action — fire-and-forget, off the critical path.