Architecture

Components and data flows

Every moving part, where it runs, and every connection between them, with the protocol and the credential each side uses.

Describes LayerT as built on 18 September 2026. Anything not built is labelled.

In the browser

LayerT’s browser side is a Manifest V3 extension. Your MDM installs it and pins its icon to the toolbar using Chrome enterprise policy templates for Windows, macOS and Linux.

PartWhat it isNotes
Service workerThe extension’s background processHolds the device’s credentials, fetches and verifies signed policy, batches audit events, brokers shared-account grants, runs timers for session expiry
Content scriptsScripts Chrome runs in each page’s isolated worldSeparate from the page’s own JavaScript. They read values only from the fields your rules name, and fill shared-account sign-ins
In-page promptsThe block card, notices, account menu and session chipDrawn in closed shadow roots, so page scripts can’t read or restyle them. Buttons act only on real clicks and key presses. They use system fonts, so LayerT never loads web fonts into other companies’ pages
Account menu frameAn extension page shown in a frame inside the promptThe shared-account list lives in the extension’s own origin, not in the page
Toolbar popupThe launcher, approvals and quick addAn extension page; never part of a website
The trust cue a page can’t fake. While any LayerT prompt is on a tab, LayerT lights an amber dot on its own toolbar icon. A website can copy the look of a prompt, but it can’t draw in the browser’s toolbar. LayerT prompts also never ask for a password, and a test enforces that no prompt contains a password field.

In LayerT’s cloud

PartWhat it isNotes
Console and APIOne web applicationThe admin console, the extension’s API, the SCIM 2.0 server and the OpenID Connect client
PostgresThe system of recordSigned policy versions, audit events, directory data, requests and sessions. Shared-account secrets are stored as ciphertext in their own table
Object storageS3-compatibleSession recordings only, encrypted on the device before upload. The bucket never holds plaintext
Policy signerEd25519 signing of each policy versionKeys held server-side today; moving to a managed cloud KMS Coming soon
Scheduled jobsFive recurring jobsClose expired requests and sessions, apply retention, re-sign policy before it expires, rebuild policy after directory changes, check gateway health
Hosting. LayerT isn’t in production yet. The planned setup is a managed platform with managed Postgres in a US region. Data residency options aren’t available yet. We’ll publish the hosting providers and regions here before launch.

Outside LayerT

PartOwned byHow LayerT uses it
Your identity providerYouSends people and groups to LayerT over SCIM 2.0, and signs admins and people in over OpenID Connect. Built for JumpCloud
Your MDMYouPushes the Chrome policy that installs LayerT, pins its icon and tells it which organisation it belongs to
The sites your people useVendorsLayerT reads and fills forms on them. It never changes a vendor’s servers or traffic

Data flows

Every flow below runs over HTTPS.

FlowDirectionWhat movesAuthenticated by
Directory syncIdentity provider → APIPeople, groups, active status (SCIM 2.0)A LayerT-issued SCIM token, stored only as a hash
Console sign-inBrowser ↔ API ↔ identity providerOpenID Connect authorization code flowSigned ID token, checked against the provider’s published keys
Console useBrowser → APIDecisions, rules, settingsA server-side session, re-checked on every request
EnrolmentExtension → API → identity providerThe person signs in once; the browser gets device credentialsThe identity provider’s sign-in
Policy syncAPI → extensionThe signed policy for your organisationDevice token; the policy itself is verified with Ed25519 in the browser
AuditExtension → APIEvents about blocks, matches, approvals and sessionsDevice token, which must match the event’s device
Requests and grantsExtension ↔ APIAccess requests, decisions, shared-account grantsDevice token, bound to the person and the enrolled browser
RecordingExtension → API → object storageEncrypted recording chunksDevice token; chunks are already encrypted
Scheduled jobsPlatform scheduler → APITrigger onlyA shared secret, compared in constant time

What the extension sends, and what it doesn’t

  • It sends audit events when a rule matches, including the site, the field and the value that matched. That’s how an auditor can see that a personal address was stopped.
  • It sends access requests with the person’s reason, and encrypted recording chunks when recording is on for a shared account.
  • Outside a recorded shared-account session, it doesn’t send page contents. It never sends browsing history, or anything typed into fields your rules don’t name.