Join the List
Security

Your shop's data,
locked down.

Encrypted in transit and at rest. Per-shop database isolation. Role-based access, two-factor auth, and full audit logs. Your jobs, your customers, your pricing — they stay yours.

Join the List →Talk to security
Encryption
AES-256-GCM
At rest, plus a second layer on secrets.
Authentication
TOTP 2FA
Standard authenticator-app two-factor.
Isolation
1 DB / shop
Every tenant gets its own database.
Disclosure
RFC 9116
Published security.txt, real inbox.
Encryption

Encrypted coming
and going.

In transit

TLS on every connection

Every request is served over HTTPS. Plain HTTP is upgraded, never accepted.
HTTP Strict Transport Security (HSTS) tells browsers to refuse an unencrypted fallback for your shop's subdomain.
A strict Content Security Policy with per-request nonces blocks injected scripts before they can run.
At rest

AES-256, twice on secrets

Your stored data is encrypted with AES-256 at the storage layer.
Sensitive values — OAuth tokens, API keys, webhook secrets — get a second layer of AES-256-GCM with a unique random IV per value.
Keys are derived with HKDF-SHA256 and domain-separated, so one context can't unlock another.
Access

Only the right people,
only the right data.

Defense in depth on the login: strong password handling, optional two-factor, and permissions checked on the server for every request — not just hidden in the UI.

Passwords

Hashed, never stored

Passwords are salted and hashed with an adaptive algorithm. We never store or log the plaintext.
New and changed passwords are checked against the Have I Been Pwned breach corpus using its k-anonymity API — your password never leaves our server in full.
Sessions & 2FA

Two-factor available

Authentication runs on NextAuth with signed, server-validated sessions.
TOTP two-factor (any authenticator app) is supported, and required for platform-admin access to the back office.
Roles

Least privilege

Role-based access controls what each teammate can see and change.
Permission checks are enforced server-side on every API call. The UI follows; it isn't the gate.
Tenant isolation

Your shop gets its
own database.

Kontrol OS™ is multi-tenant, but your data doesn't share a table with anyone else's. Each shop is provisioned its own dedicated database — not a shared one filtered by a column.

A separate database per tenant means a query bug can't bleed one shop's jobs, customers, or pricing into another's.
Your shop is resolved from its subdomain at the edge, before any app code runs, and the request is pinned to that tenant for its whole lifetime.
Uploaded files are namespaced per shop, so storage stays separated too.
Suspended or deactivated shops are stopped at the door — before any data is read.
Infrastructure

Built on infrastructure
that doesn't cut corners.

We run on vetted providers and let them do what they do best — so payment data, hosting, and storage all sit behind hardened, audited platforms.

Vercel
App hosting on a global edge network with automatic scaling and built-in DDoS mitigation.
Neon
Serverless PostgreSQL with encrypted storage and point-in-time recovery — one isolated project per shop.
Stripe
PCI DSS Level 1 payment processing. Card numbers and bank details live with Stripe — never on our servers.
Payments
Kontrol OS™ never touches a raw card number. Every incoming Stripe webhook is verified with a signed, timing-safe signature check before we act on it, so forged events get rejected.
Integrations
Outside services are untrusted by default. Inbound webhooks are signature-checked, and the OAuth tokens and keys we hold for your connected apps are encrypted before they're stored and decrypted only at the moment of use.
Continuity & monitoring

Backed up, watched,
and rate-limited.

Backups
Databases run with point-in-time recovery, so your shop can be restored to a moment before a problem.
Required configuration is validated at startup — a misconfigured deploy refuses to boot instead of running half-broken.
Monitoring
Errors are captured with full context for fast triage, and every request carries a trace ID end to end.
Security-sensitive actions are written to an audit log so there's a record of who did what.
Abuse control
Route-specific rate limits guard logins, public forms, uploads, and API calls against brute force and abuse.
Over-limit requests get a clean 429 with a retry hint instead of degrading the platform for everyone.
Data ownership

It's your data.
You can take it.

We're the custodian of your shop's data, not the owner. No lock-in, no hostage exports. Our Privacy Policy spells out your access, correction, deletion, and portability rights, and a Data Processing Agreement is available when you need one on paper.

Export your records — jobs, customers, quotes — and walk if you ever want to.
Deletion requests are honored under CCPA and GDPR, the same as the rest of your data rights.
We process your data to run the platform you pay for — we don't sell it.
Responsible disclosure

Found something?
Tell us first.

We welcome reports from security researchers and won't pursue anyone acting in good faith. Email us with reproduction steps and give us a reasonable window to fix it before going public.

security@kontraktr.io →

Machine-readable policy at /.well-known/security.txt (RFC 9116).

We acknowledge new reports within one business day.
We give you an honest assessment and a remediation timeline.
Critical issues are our top priority and we aim to remediate them fast.

A note on certifications: we describe what we actually do — encryption, isolation, access control, disclosure. We don't claim SOC 2, ISO 27001, or HIPAA certification, because we'd rather earn your trust with the controls above than with a badge we haven't earned. Formal audits are on the roadmap.

Run your whole shop
on one OS.

$99/month. Unlimited everything. No contracts.

Join the List →Meet KORA