Security Architecture Report

Access control, audit trail
and data isolation, in detail.

The full technical account behind Om™’s security claims: written to be handed to a security reviewer, procurement team or institutional IT contact without a follow-up call.

Back to Security & Compliance

Report fact sheet

Isolation model
Row-level security scoped to the institution, or to the individual
Access roles
Owner · Editor · Viewer · Platform administrator
Read-only enforcement
A viewer’s writes are refused by row-level security, not only by the interface
Audit coverage
Reads, writes, project, report and figure exports, sign-ins, admin actions, outbound lookups and cache writes
Tamper evidence
SHA-256 hash chain, verified on demand
Retention
12 months active tier, then archive tier
Erasure
Self-service per project and per workspace — cloud records, plus device payloads on the requesting device
Device storage
Bound per account; every app-owned store cleared on sign-out or account switch
Raw measurement matrices sent to servers
Not for lipidomics or metabolomics analysis. A named set of server-side paths does receive data — single-cell archive parsing, Olink export parsing, proteomics fitting, transcriptomics permutation/lncRNA and the metagenomics pipelines — each listed in the egress table
Project records
Session settings, results tables, annotations and report text — no measurement rows
Start here

The four questions every security review opens with

Who can see our data?

Only your institution. Every project and audit record carries its scope — the institution, or the individual who created it — and row-level security filters every read and export to that scope. Inside a workspace the roles differ: owners and editors can change the workspace’s projects, a viewer’s write is refused by the database itself, and each member also sees their own activity. Platform administrators are the one stated exception: they can read across institutions for support and compliance work, and doing so is itself recorded.

Can Om staff see it?

Not silently. Administrative access to another institution’s project requires a declared reason, is recorded on the server before any content is returned, and appears in your audit trail as a vendor-access event you can read at any time.

Where is it stored?

Measurement matrices and working data stay in this browser’s device storage; the cloud record holds session settings, results tables, annotations and report text, and never measurement rows. Every store the app keeps on the device — workflow data and metadata, enrichment caches, saved project payloads — is cleared when you sign out or a different account signs in on this browser. Workspace erasure removes the workspace’s project records and clears the device that ran the erasure; other members’ browsers keep their own local copies until they sign out or switch account. Audit records are stored in the app database.

Who else receives it?

Two kinds of paths. Reference lookups send the identifiers you query — gene symbols, metabolite, lipid and taxon names, pathway IDs — from our server to the named public databases. Beyond those lookups, a named set of our own server-side paths receives data: single-cell archive parsing, Olink export parsing, proteomics differential fitting, transcriptomics permutation and lncRNA work, and the metagenomics pipelines. AI-drafted report sections are generated by the model provider from your results tables. No measurement matrix is sent as part of a lookup, and the table below states exactly what each path receives.

Access control

Institution workspaces, roles and the isolation boundary

Authorization decides who is allowed to see a record; isolation decides whether one institution can structurally reach another\u2019s. Om™ enforces both.

RoleWhat they can do
Institution OwnerManages the workspace and its policy, invites and removes members, sets each member’s role, sees the full audit trail, can request workspace-wide erasure.
Institution EditorOpens, analyses, saves and exports the workspace’s projects.
Institution ViewerReads and exports the workspace’s projects. Saving, renaming and deleting inside the workspace are refused by the server, not merely hidden in the interface.
Platform AdministratorPlans, pricing, module availability and account review. Accessing a customer’s project requires a declared reason and is recorded as a vendor-access event in that institution’s trail.
Unaffiliated userKeeps the personal-ownership behaviour: sees and manages only records they created, until they join or create a workspace.

Tenant boundary on every row

Projects carry the institution identifier. Row-level security filters reads, updates and deletes to your institution, and a project can only be created inside its creator’s own institution.

Membership stays authoritative on the server

The institution record owns the member list and each member’s role. The copy on the user record is reconciled server-side on every session; a browser that writes it directly is detected, recorded as a denied access event and reverted. The same record carries the single scope a member may write in, and row-level security compares each project against it: which is why a viewer cannot save into the workspace even through the API.

Shared caches are scoped too

Annotation caches hold the identifiers people query. They are readable only within the institution that produced them (or by the individual who did), or by administrators for reference data: never across institutions.

Audit trail

What is recorded, and why it can be trusted

Every record answers actor, action, target, outcome, time and source: and is written by the server, never by the browser.

Recorded

  • Opening a project, workflow or analysis module
  • Creating, saving, importing or deleting a project
  • Exporting a project file, a report or the audit trail itself
  • Signing in and signing out
  • Administrative actions: workspace changes, invitations, role changes, member removals, erasure requests and retention runs
  • Outbound reference lookups and shared-cache writes

Never recorded

  • Measurement values, uploaded files and figure pixels: the trail records that a lookup, save or export happened, never the measurements themselves
  • Passwords, tokens or any credential
  • Free-text entered into analysis fields

Tamper-evident

Each record stores the hash of the record before it plus a SHA-256 hash of its own contents. Changing any stored field breaks the chain, and the integrity check on the audit screen reports exactly where.

Append-only

Only the server writes audit records, using its service identity. The interface cannot edit or delete a record, and cannot attribute one to another account: it can only ask the server to record an event for the signed-in account, and the server resolves the actor, the institution, the category and the timestamp.

Readable by the right people

Your institution sees its own trail; each member also sees their own activity. Administrators can read across institutions for support and compliance work, and that reading is itself a recorded event.

Data egress

Which services receive what, and when

This page states plainly where data goes. Measurement matrices stay in your device storage and never enter a project record, but reference lookups, AI-drafted sections and a named set of our own server-side paths do receive data: each named here. Reference lookups are recorded under Outbound lookups in your audit trail.

ServiceWhat is sentWhyCan it be avoided
KEGG, Reactome, WikiPathwaysGene, protein, metabolite and lipid identifiers you query, with the organismPathway annotation and enrichment lookupsLookups are skipped when a result is already cached for your workspace
HMDB, LipidMaps, ChEBI, MetaCyc/BioCyc, NCBI TaxonomyMetabolite, lipid and taxon names or identifiersChemical annotation, identifier resolution and taxonomy validationLookups are skipped when a result is already cached for your workspace
UniProt, Xenbase, mygene.info, Open TargetsProtein and gene identifiersGene-symbol normalisation, protein annotation and disease associationLookups are skipped when a result is already cached for your workspace
AI model providers (via the platform integration)The results tables, figure text and prompts used to draft report sections: never raw measurement matricesDrafting abstract, insights, discussion and methods textReport text can be written manually with no AI call
Our servers: single-cell archive parserThe 10x archive you upload so it can be parsed server-side, held in private storage and returned through a short-lived signed linkHandles 500 MB+ archives that would exhaust the browserNot avoidable for archive uploads; CSV/TSV matrices are parsed in the browser
Our servers: Olink file parsingThe NPX values and the sample/assay metadata from your Olink exportParses and validates the panel export server-sideNot avoidable for Olink exports today
Our servers: proteomics differential analysisThe NPX matrix and the study design (groups, covariates) for the methods that fit on the server, with a browser fallbackStatistical fitting for large Olink panelsNot avoidable for those methods today
Our servers: transcriptomics permutation and lncRNA workThe ranked gene list for GSEA/SPIA permutation work, and gene-level data for the lncRNA pipelineHeavy permutation work and transcript assemblyA browser-side engine runs the same tests locally when the worker is unavailable
Our servers: metagenomics pipelinesAggregate taxonomic and functional tables with analysis parameters, plus the ASV/taxonomy tables uploaded for functional prediction, resistome screening and MAG functional annotationShotgun, 16S and PICRUSt2 pipeline stagesNot avoidable for those workflows
Retention and erasure

How long records are kept, and how they are removed

12 months active, then archive

Audit records stay in the active tier for twelve months and are then moved into the archive tier by a nightly scheduled job. Archived records remain in the trail as evidence but drop out of the default view; your audit screen has an Include archive switch when you need them.

Nothing is deleted by the interface

The trail is append-only: no role can edit or delete a record through the app, and the retention job only ever changes the archive flag. That is what makes the trail usable as evidence rather than as a log that can be tidied up.

Erasure that means erasure

A workspace owner can erase the workspace’s data: every project record is removed, and the payloads held in device storage are cleared on the device that ran the erasure. Other members’ browsers keep their own local copies until they sign out or switch account. The audit record of the deletion stays — that record is the evidence that the deletion happened.

Controls

Every control, marked for what it actually is

Nothing here is aspirational language: each row states whether the control lives in the app, is provided by the platform, is a setting an administrator must switch on, or is still on the roadmap.

Implemented in appPlatform-providedAdministrator-setRoadmap
ControlStatus
Institution workspaces with owner / editor / viewer rolesImplemented in app
Row-level tenant isolation on project recordsImplemented in app
Append-only audit trail with hash chainImplemented in app
Vendor break-glass access with declared reasonImplemented in app
Audit retention with archive tierImplemented in app
Self-service project and workspace erasureImplemented in app
Device storage cleared on sign-out or account switchImplemented in app
Outbound lookup and shared-cache write auditingImplemented in app
Report and figure export auditingImplemented in app
Named disclosure of the server-side processing pathsImplemented in app
Export provenance in portable project filesImplemented in app
Export provenance inside report PDF/HTML outputRoadmap
SSRF and origin guard on outbound lookupsImplemented in app
Administrator gate on billing operationsImplemented in app
Encryption in transitPlatform-provided
Encryption at restPlatform-provided
Secrets and key managementPlatform-provided
Backups and disaster recoveryPlatform-provided
Multi-factor authenticationAdministrator-set
Workspace SSO (SAML) and SCIM provisioningRoadmap
Session timeout and device/session managementRoadmap
IP allowlisting per workspaceRoadmap
Vulnerability disclosure policyRoadmap
Independent penetration testRoadmap
SOC 2 Type IIRoadmap
ISO 27001Roadmap
HIPAA Business Associate AgreementRoadmap
GDPR data processing agreementRoadmap
Reading these claims

Every row marked “Implemented in app” is verifiable in the code, and every row marked “Roadmap” is a control we have not shipped: they are listed rather than omitted so your review can act on the gap. Certifications such as SOC 2 and ISO 27001 are awarded by third parties and are not claimed here. If your institution needs a data processing agreement, a business associate agreement or answers to a security questionnaire, contact us and we will work through it with your compliance contact.

See the trail for your own workspace

Sign in and open the audit trail to read every recorded access, export and administrative action for your institution: and to export it as an evidence file.