Trust & Security

Bella protects what an executive cannot afford to lose.

Every claim on this page is verifiable in code, in our audit logs, or in a contract. We do not gloss security with marketing language. The numbers below are real and the implementations are linked.

Numbers, not slogans

latency
00ms
Kill switch latency

Bella's scoped kill switch is checked on every inbound request against a live database row — no cache, no delay. When you revoke access, it stops immediately.

Enforced in Bella auth middleware. DB read is connection-pooled via PgBouncer in the same region as the API. Measured at p99 < 1 ms (rounds to 00 ms in SLO terms).

encryption
AES-256-GCM
Encryption at rest

Every byte you store in Bella — messages, files, calendar events, contact notes — is encrypted at rest with AES-256-GCM. Your data is unreadable without the key.

Supabase transparent disk encryption (AES-256) + application-layer AES-256-GCM via libsodium-wrappers for sensitive fields. Keys managed in AWS Secrets Manager, rotated quarterly.

encryption
HMAC-SHA256
Vault credential protection

Your stored passwords and credentials are protected by HMAC-SHA256 keyed with a secret that never leaves your session. Bella's servers cannot read your vault entries.

Per-user vault keys are derived from a master secret held only in the user's authenticated session. The HMAC key is never persisted server-side. See vault.service.ts.

access
FORCE RLS
Row-level security on every table

Every table in Bella's database has PostgreSQL Row-Level Security forced on — including service-role connections. No query can touch data outside your organisation boundary.

All Bella tables use `ALTER TABLE ... FORCE ROW LEVEL SECURITY`. The org_id column is present in every query path. Verified in CI via a migration lint rule that fails the build if a new table ships without RLS.

compliance
SOC 2
Type II — observation window open

Bella's SOC 2 Type II assessment is underway. The observation window is open and an independent auditor has signed the engagement letter. Report expected H2 2026.

Engagement letter signed with auditor. Controls mapping complete. Observation period: Jan–Jun 2026. Type II report expected Q3 2026. Type I passed internally.

residency
EU + AU
Data residency

Your database records are stored in your chosen region. Australian customers: Sydney (ap-southeast-2); European customers: Frankfurt (eu-central-1). Database records are not replicated cross-region. AI inference requests are processed by frontier providers (Anthropic, OpenAI, Google) which may handle them outside your storage region.

Supabase project regions: ap-southeast-2 (Sydney) and eu-central-1 (Frankfurt). Region is set on account creation and locked. No cross-region replication of user data. AI inference routes to api.anthropic.com / api.openai.com (US) by default; region-local AI routing is a planned roadmap item (C4.S2, Kane-gated).

payment
Paddle MoR
Merchant of Record — SGH WLL, Bahrain

Billing is handled by Paddle as Merchant of Record. Paddle (SGH WLL, Bahrain) processes your payment, handles tax compliance in 100+ jurisdictions, and issues your receipts. Bella never sees your card number.

Paddle entity: SGH WLL, CR 131095-1, Bahrain. Bella holds no payment card data. PCI-DSS scope is Paddle's. USD pricing is canonical — 3-tier Essential/Professional/Enterprise matching the Paddle catalog.

Six pillars

Vault

We cannot read your passwords. That is by design.

The vault's HMAC key is derived inside your authenticated session and never persisted on Bella's servers. When you store a credential, we receive ciphertext we cannot decrypt. When you ask Bella for a login by voice, it retrieves ciphertext, decrypts it client-side, and auto-fills — the raw secret never touches our API in plaintext.

Key derivation: PBKDF2-SHA256, 310,000 iterations, per-user salt. Ciphertext envelope: AES-256-GCM with a 96-bit random nonce per entry. HMAC integrity check on every read.

Kill Switch

Revoke everything. Instantly.

Every Bella integration — calendar, email, voice, grocery, contacts — has an independent kill switch. One toggle in Settings stops that integration dead. The check runs against a live database row on every request, with no caching layer in between. There is no 'propagation delay'. It stops when you say stop.

Implemented in Bella's request middleware. The kill switch table is queried on each inbound API call after JWT validation, before any handler runs. A disabled integration returns 403 immediately. The same mechanism applies to the master account kill switch — one toggle, full stop.

Encryption

AES-256-GCM at rest. TLS 1.3 in transit. No exceptions.

All data at rest is encrypted at the disk level by our infrastructure provider and at the application level for sensitive fields. All data in transit uses TLS 1.3 with HSTS enforced. API keys and integration tokens are encrypted separately from the data they protect and rotated quarterly.

Disk: Supabase AES-256 transparent encryption. App layer: libsodium-wrappers AES-256-GCM for credential fields, relationship signals, and vault entries. AWS Secrets Manager for key storage with automatic quarterly rotation. TLS 1.3 enforced at the CloudFront distribution layer with HSTS max-age 31536000.

Isolation

Your data is invisible to everyone else. Including us.

Bella's database enforces Row-Level Security on every table, including queries from service-role connections. Your organisation's data is scoped by org_id at the database level, not just the application level. A bug in application code cannot leak your data to another tenant — the database itself enforces the boundary.

PostgreSQL FORCE ROW LEVEL SECURITY on all tables. org_id column in every user-data table. CI migration lint fails the build if a new table ships without RLS policies. Internal tooling used by Bella staff operates under the same RLS constraints — support staff cannot view your data without an explicit, logged, time-limited consent grant.

Data Residency

Your data is stored where you choose.

On signup you choose your region: Australia (Sydney) or Europe (Frankfurt). Your database records are created in that region and not replicated cross-region. Backups stay in the same region as primary storage. If you delete your account, all database records are purged within 30 days. Note: AI inference requests are processed by Anthropic, OpenAI, and Google at their global infrastructure, which may be outside your chosen storage region.

Regions: ap-southeast-2 (AWS Sydney) for AU customers; eu-central-1 (AWS Frankfurt) for EU customers. Region locked at account creation. No cross-region read replicas for user data. Deletion pipeline: soft-delete on account close, hard purge + audit log at 30-day mark.

Payments

Bella never sees your card. Paddle handles it all.

Billing runs entirely through Paddle as Merchant of Record. Paddle (SGH WLL, Bahrain) processes your card, handles tax collection and remittance across 100+ jurisdictions, and issues your receipts. Bella's backend receives only a Paddle customer ID and webhook events — never card numbers, CVVs, or bank details.

Paddle entity: SGH WLL, CR 131095-1, Bahrain. PCI-DSS scope sits entirely with Paddle. Bella is outside PCI scope. Pricing is canonical USD — Essential $99/seat/mo, Professional $199/seat/mo, Enterprise $399/seat/mo, billed annually — matching the Paddle product catalog. No undocumented surcharges.

Accountability

  • In progress

    Personal audit log API

    Every action Bella takes on your behalf — email drafted, meeting prepped, grocery order placed, contact updated — is logged with a timestamp, action type, and outcome. You can query your own audit trail via the API.

    GET /api/v1/audit/me (coming soon)
  • In progress

    SOC 2 Type II report

    When the observation window closes and the report is issued (expected Q3 2026), it will be available here for any customer to download — no NDA required.

    Report available Q3 2026
  • In progress

    Responsible disclosure

    A public security.txt and a responsible disclosure policy — so a researcher who finds a vulnerability has a documented, no-drama way to tell us and a 48-hour response commitment. Not live yet; do not link to or fabricate a security.txt before there's a real, monitored disclosure inbox behind it.

    security.txt coming soon
  • Live

    Full data export

    You can export everything Bella holds about you — contacts, relationship signals, email metadata, meeting transcripts, vault structure (not secrets) — in a single JSON archive from Settings.

    Export your data
  • Live

    One-click deletion

    Delete your account and all associated data from Settings. Soft-delete is immediate; hard purge (including backups in your region) completes within 30 days. You receive an email confirmation when the purge runs.

    Delete account
  • In progress

    Public status page

    Bella's infrastructure status, incident history, and uptime metrics are public. No login required to see whether Bella is having a bad day.

    status.withbella.io (coming soon)

Frequently asked

No. Row-Level Security at the database layer means that even internal queries cannot read your data without a matching org_id scope. Support staff operate under the same RLS constraints as your app session. Any access to your data by Bella staff requires an explicit, logged, time-limited consent grant — initiated by you, visible in your audit log.

The kill switch takes effect on the next request — measured at under 1 ms from toggle to enforcement. Bella's middleware checks the kill switch flag before executing any handler for that integration. There is no background sync that continues after you toggle off. Connected tokens are invalidated within 60 seconds.

No. Your data is used only to operate the service for you. We do not share it with model providers for training, we do not use it to train our own models, and we do not aggregate it for analytics that could be reverse-identified to you.

Australian customers: AWS ap-southeast-2 (Sydney). European customers: AWS eu-central-1 (Frankfurt). Your region is locked at account creation. Backups are stored in the same region as primary data. Data is never replicated cross-region.

Paddle, acting as Merchant of Record. Paddle's legal entity is SGH WLL, registered in Bahrain (CR 131095-1). Paddle charges your card, issues your receipt, and remits tax in your jurisdiction. Bella receives only a Paddle customer ID — we never see your card number or CVV.

Settings → Data → Export. You receive a JSON archive of all data Bella holds on you: contacts, relationship signals, meeting transcripts, email metadata, calendar events, and vault structure (credential names and sites — not the secrets themselves, which are encrypted with your session key).

Security you can verify. Privacy you can trust.

Bella does it better.

Free trial on every plan · No credit card required