Every control below is implemented in public code. Search the register, then audit it.Read the source ↗
LOpenLPM
Home/Security & isolation
Security · assurance summary · edition 2026.09

The promise is simple: two databases, and they never meet.

Everything else on this page is detail — written for the person who will actually test the claims. Controls cited by runbook section, plus a named list of what we refuse to over-promise.

Staff workspace STAFF SIDE

your firm’s own system · records · documents
Everything the firm does your records only
Staff accounts & sessions never copied out
Encryption keys unique to your firm

Client portal CLIENT SIDE

a separate system · separate records · separate documents
Only what you shared nothing else
Staff records — never written here not possible
Staff pages do not exist here no route to them
Fig. 01 — verified on the live fleet · runbook §§50–§52the red ✕ paths are not switched off — they do not exist
Sharing, in plain words

What crosses — and what can’t

What it isHow it reaches the clientVerdict
Matter status & stepsOnly the fields you mark as shared — internal notes stay inside the firm✓ Permitted · audited
Shared documentsA copy is placed where the client can see it, as an attachment rather than a link✓ Permitted · audited
MessagesShared one item at a time, each share recorded with who sent it and when✓ Permitted · audited
Client invoices & receiptsThat client’s own invoices and receipts, and nobody else’s✓ Permitted · audited
Staff identities & directoryNever placed on the client side at all✕ Excluded · structural
The trust ledgerFirm-side only; clients see their own statements✕ Excluded · structural
Any other client’s dataThere is nowhere on the client side for it to sit✕ Excluded · by absence
The controls

Ten things we do anyway

Filter the register — or read it end to end. Evidence cites the public runbook.

Separate systems per audience

The staff system and the client portal are separate. A problem on the client side cannot read staff records, because there is no path between them.

§§50–52
Records written whole

An entry is saved complete or not at all, and text typed into a field is never treated as an instruction. Half-saved matters are not a state the system allows.

§24
Passwords & two-factor

Passwords are stored in a form nobody can read back — not us, not your IT adviser. Optional app-based two-factor, a forced change at first sign-in on every invite, and lockout after repeated failures.

§§25–26
Access withdrawn at once

Changing a password ends existing sessions, and permissions are re-checked on every action. A fee-earner who leaves stops being signed in — immediately, not at the end of the month.

§26
Audit trail

Logins, changes and money movements recorded with before/after values — in the firm’s own database, exportable by the firm.

§44
Sensitive details encrypted

Client identifiers and tax numbers are encrypted with keys unique to your firm, and stay searchable where you need to find them.

§37
Upload & delivery policy

Only expected file types are accepted, executable and script files are refused, and documents reach clients as attachments rather than as links anyone could forward.

§31
Trust-account rules

Money in → trust; disbursements out; fee transfers double-entry with balance guards. Deficits refused at the write.

§53 E2E
Rate limits & bot protection

Limits on sign-in attempts, uploads and money movements, and public forms are protected against automated submissions.

§29
Keys unique to your firm

Encryption keys are created for your firm alone. Replacing one firm’s keys touches no other firm, and no shared key exists to be lost.

§35
No control matches that search — try “ledger”, “session” or “upload”.
Scope

What we will state — and what we will not

Stated as fact defensible

  • Separate records for staff and clients — the two sides never share a store.
  • No shared tenancy in the default setup — your firm’s software, records, documents and keys are its own.
  • Nothing for you to patch — no servers or virtual machines anywhere in the arrangement.
  • Per-firm releases — tested on our own firm first, checked afterwards, and reversible for one firm at a time.

Refused as over-claim said aloud

  • “True isolation, code-wise” is overstated: it is one product with two separately run parts. The separation is in how your firm is set up, not in two different programs.
  • Separate accounts per firm are the target. The demonstration firms share one account boundary today, so until that changes the blast radius between demonstration firms is account-level. It is written into the plan as item B5.
  • Our operations console holds a powerful key — what it can reach, and how often it is replaced, are treated as operational controls and recorded in our threat notes §§40–§43.
  • Trust checks happen at the moment of writing, not by locking a record. That is safe when one person posts at a time; for firms where several people post to the same client account simultaneously, we flag it rather than pretend otherwise — it is on the list before general release.

Roll back one firm

The previous verified build redeploys to that instance alone. No fleet-wide surprises either way.

Restore from your own copies

Your firm’s records are copied on a schedule to storage your firm holds, and can be restored without touching anyone else’s.

Quarantine by shape

A compromised instance is separated exactly as a healthy one is — neighbours share nothing to reach through.

Audit every control in sourceBring your IT person to the demo
“Show me the boundary in the code — then let me decide.”
how every openlpm walkthrough begins
Practice Notes

One email a month, for people who run firms.

How other firms handle the parts nobody enjoys — trust reconciliation, chasing debt, keeping procedure written down. No product announcements unless something genuinely changes for you.

Please enter a valid work email.

Monthly. Double opt-in. One click to leave. See the privacy notice.

Prefer to see the whole thing first? All three lists.