Security & privacy — stated plainly

Your most sensitive data can stay on your machine.

The strongest privacy guarantee is architectural, not a promise: your statistics and the notebook's Python run in your browser, so raw data never has to reach our servers. Everything you do choose to save is encrypted in transit and at rest, isolated per researcher in the database, and recorded in an audit log a session can't forge. Here is exactly what we enforce — and exactly what we don't claim.

Where your data lives

Where your data livesclient-side by default
Stays on your machine
Statistics Workbench
t-test · ANOVA · correlation · regression · non-parametric
Notebook Python
cells + matplotlib figures, executed in your tab
Image & gel analysis
densitometry + cell counting run in your browser — pixels only leave if you choose the optional AI quality-check
Raw datasets you load
no round-trip; the numbers compute where they sit
Crosses only if you save it
Protocol text + results you save
TLS 1.3 in transit
Account & session metadata
AES-256 at rest
Files you explicitly upload
private, per-user storage buckets
Audit events
append-only, service-role-only — a session cannot write or alter it
Client-side
Stats stay local
AES-256
At rest
TLS 1.3
In transit
Append-only
Audit log
RLS
Per-row access
Salted hash
Password hash
The stack

The whole stack, on one sheet.

No marketing translation. These are the actual primitives, where they run, and what they cover.

ControlPrimitive / standardWhere it runs
In transitTLS 1.3 · 1.2 fallbackHTTPS on all connections; HTTP is redirected to HTTPS
At restAES-256 (provided by our infrastructure platform)Primary Postgres database + object storage
Passwordsbcrypt + per-user saltHashed on write; never stored or logged in plaintext
Second factorTOTP + single-use recovery codesEnforced fail-closed once you enable it
Tenant isolationPostgreSQL Row-Level SecurityChecked in the database engine, default-deny
Audit trailPostgres append-only (RLS, no browser write policy)Service-role writes only; a session cannot forge it
SecretsEncrypted vault, runtime-injectedNever committed to source control
Defense in depth

Six independent layers, in sequence.

No single control is a point of failure. These controls are independent, so a weakness in one does not automatically expose the others — from the network edge to a database engine that refuses to return another tenant’s row.

L1

Transport & edge

Traffic is encrypted in transit (TLS) and filtered at our hosting provider's network edge before it reaches application code.

  • TLS 1.3 with TLS 1.2 fallback on all connections; HTTP is permanently redirected to HTTPS
  • Global edge network with DDoS absorption and anycast routing through our hosting provider
  • Rate limiting on authentication, AI, and API endpoints to slow brute-force and abuse
L2

Browser hardening

A strict set of HTTP security headers constrains what the browser will execute, load, or expose.

  • Content Security Policy restricting scripts, styles, fonts, images, and connections to an explicit allowlist
  • X-Frame-Options: DENY and frame-ancestors to prevent clickjacking
  • X-Content-Type-Options: nosniff to block MIME-type confusion attacks
  • Permissions-Policy disabling camera, microphone, geolocation, USB, and FLoC cohorts
  • Referrer-Policy: strict-origin-when-cross-origin to limit referrer leakage
L3

Authentication & sessions

Identity is verified on every request, and credentials are protected with standard cryptography.

  • Passwords hashed with bcrypt using a per-user salt; plaintext is never stored or logged
  • Optional TOTP two-factor with single-use recovery codes; when enabled it is enforced before any dashboard or API access — un-stepped-up sessions are redirected to the challenge (fail-closed)
  • hCaptcha on sign-in and sign-up to slow automated abuse
  • Short-lived JWT access tokens with automatic secure refresh; "sign out everywhere" revokes every active session
  • Secure, SameSite session cookies; a strict CSP and an explicit cross-origin CSRF/Origin check mitigate token theft and request forgery
  • Per-account session timeouts and a visible login history (IP + device) for anomaly review
L4

Authorization & data isolation

Even with a valid session, every row is gated by database-enforced access policies, not just app logic.

  • PostgreSQL Row-Level Security on user data tables — isolation is checked at the database engine, not the app layer
  • Default-deny posture: tables reject all access unless an explicit policy grants it
  • Least privilege: the anonymous role can read only explicitly public content
  • SECURITY DEFINER functions pinned to a fixed search_path and revoked from public roles to block privilege escalation
  • Private storage buckets scoped per user; uploads validated by MIME type and size
L5

Encryption at rest

Stored data is encrypted on disk and in backups using strong, modern ciphers.

  • AES-256 encryption at rest for the primary database and object storage, provided by our infrastructure platform
  • Automated backups managed by our database provider; recovery options depend on the provider plan in effect
  • Secrets and API keys stored in an encrypted environment vault, never committed to source control
  • Cryptographic operations (hashing, digests) handled by vetted libraries (pgcrypto, bcrypt)
L6

Audit & accountability

Security-relevant actions are recorded in an append-only log that user sessions cannot forge, alter, or delete.

  • Append-only by design: users read their own events through a scoped function but cannot insert, alter, or delete entries
  • Entries are written only through a privileged server-side path (service role); a session has no way to forge or suppress them
  • Auth events, data mutations, and administrative actions are logged with actor, IP, user-agent, and timestamp
  • Failed-sign-in and rate-limit events are recorded for review of brute-force and credential-stuffing patterns
Honest scope

What we do — and don't — claim.

Trust erodes the moment a security page overstates. So the honest version sits right next to the enforced one, in the same size type.

What we enforce today
  • Statistics + notebook Python run client-side — raw data can stay on your machine
  • TLS 1.3 in transit, AES-256 at rest
  • Per-tenant isolation by PostgreSQL Row-Level Security, default-deny
  • bcrypt passwords and optional TOTP two-factor, enforced fail-closed
  • An append-only, service-role-only audit log on security-relevant actions
  • Strict CSP and rate limiting at the edge
What we do not claim
  • Not SOC 2 audited as of this writing
  • Not a HIPAA-covered platform by default — do not upload PHI
  • Not GLP, and not a clinical or regulatory system-of-record
  • Not end-to-end encrypted; HSTS is not currently enforced
  • No fabricated certifications, logos, or third-party security ratings
  • AI drafts are starting points you review — never authoritative designs

SOC 2: Olto Discovery is built on security-conscious infrastructure with SOC 2-aligned controls in mind, but it has not undergone a SOC 2 audit as of this writing. We rely on infrastructure providers with established security programs, including SOC 2-compliant vendors where available.

HIPAA / PHI: Olto Discovery is not, by default, a HIPAA-covered platform. A HIPAA-capable configuration with a Business Associate Agreement (BAA) is available for Enterprise customers under a separately scoped enterprise agreement. Until such an agreement is in place, do not upload protected health information.

Transport & encryption: Data is encrypted in transit (TLS) and at rest (AES-256), but the Service is not end-to-end encrypted — AI prompts, uploaded files, and conversations are sent to our AI provider to function. HTTP Strict Transport Security (HSTS) is not currently enforced; connections are still served over HTTPS with HTTP redirected to it.

Restricted data: Unless expressly permitted in a signed Enterprise agreement with an appropriate compliance configuration, do not upload PHI, patient-identifiable clinical data, classified information, export-controlled data, controlled unclassified information (CUI), or other regulated sensitive data.

For where we align (and where we do not yet) with NIST CSF 2.0, OWASP ASVS L2, the NIST 800-series, and our FIPS-approved crypto posture — stated honestly, including what remains — see the Compliance & Trust page.

Shared responsibility

We hold the platform. You hold the keys.

Olto secures the platform, infrastructure configuration, application controls, and database access policies. You decide who is in the workspace, how they sign in, and what data goes in.

Olto secures
  • Platform code, application controls, and configuration
  • Database access policies and RLS enforcement
  • Two-factor enforcement, session management, transport encryption
  • Security headers, rate limiting, and the append-only audit log
You secure
  • Strong, unique passwords and two-factor authentication
  • Workspace membership and prompt removal of departed users
  • Per-protocol visibility and shared-project settings
  • What data you choose to upload, especially regulated data
Operational security

How we keep it that way.

Continuous monitoring
We run database security advisors against our schema — flagging misconfigured access policies, exposed functions, and missing row-level security — and dependencies are re-audited weekly against newly disclosed vulnerabilities. Errors are captured through our production error-monitoring integration.
Secure development
Every change runs a CI gate — type-checking, thousands of automated tests, linting, a production build — plus a security pipeline: static analysis (SAST), secret scanning, dependency-vulnerability auditing, and a software bill of materials (SBOM). Secrets are injected at runtime from an encrypted vault, never committed.
Data minimization
We collect only what is needed to operate the Service. Analytics consent is denied by default until you opt in — and your heaviest data (stats, Python, image math) never has to be collected at all.
Incident response
Security events land in the append-only audit trail, and we follow a defined incident-response process (detect, contain, recover, notify). Suspected vulnerabilities go to security@oltodiscovery.com for coordinated disclosure.
Backups & recovery
Encrypted backups managed by our database provider. Specific recovery and retention behavior depends on the provider plan in effect.
Third-party rigor
We build on SOC 2-compliant infrastructure providers where available and require all data processors to maintain appropriate safeguards.

Controls in your hands

Everything below lives in your account Settings — no support ticket required.

  • Two-factor authentication (TOTP) with single-use recovery codes
  • Password change with a last-changed timestamp
  • Login history with device and IP review
  • Sign out of every device and session at once
  • Granular profile visibility controls
  • Configurable session timeouts
  • Per-protocol public/private visibility
  • Per-account audit-log review

Found something? Tell us.

We welcome responsible disclosure. Report a suspected vulnerability and we'll acknowledge it and work with you on a coordinated fix. Our Vulnerability Disclosure Policy spells out scope, safe-harbor protection, and the rules of engagement — and complements the machine-readable security.txt we publish.