Security controls summary
Every row links to the page that describes the control in full. “Yours” means your account; “Atlantic’s” means LightHouse.
Identity and access
Section titled “Identity and access”| Control | Enforced in | How to verify |
|---|---|---|
| Sign-in through your own identity provider; no Atlantic-held passwords | Cloudflare Access and the LightHouse service (Atlantic’s) | Your identity provider’s sign-in log |
| A second factor for every person, checked twice; fails closed | Edge and service (Atlantic’s) | viewer.mfa.source on GET /api/v1/me |
| Sessions at most 12 hours | Cloudflare Access (Atlantic’s) | Reload after the session length |
| Machine keys: read-only roles, one tenant, at most 365 days, stored as a hash | LightHouse service (Atlantic’s) | The key at another tenant’s host answers 401 |
| Four cumulative roles, checked on every route and tool | LightHouse service (Atlantic’s) | 403 role_required on a route above your role |
| Guard rails your administrators cannot remove | LightHouse service (Atlantic’s) | 422 guard_rail naming the rule |
| No key may pay, raise a limit, approve or administer | LightHouse service (Atlantic’s); your handler (yours) | 403 person_required |
Atlantic staff: at most content_viewer, and only if you allow it |
LightHouse service (Atlantic’s) | GET /api/v1/access/review |
| Break-glass flagged until your administrator next saves | LightHouse service (Atlantic’s) | break_glass: true in your audit log |
Isolation and data
Section titled “Isolation and data”| Control | Enforced in | How to verify |
|---|---|---|
| Tenant taken from the hostname only | LightHouse service (Atlantic’s) | A client parameter changes nothing |
| Row-level security, forced on every tenant table | The database (Atlantic’s) | Walk-through under NDA |
| Telemetry content-free by allow-list, on both sides | Your engine (yours) and LightHouse intake (Atlantic’s) | Capture your egress |
| Content read in place, signed, logged in your account | Your content reader (yours) | Your reader’s log |
| Content export off by default | LightHouse (Atlantic’s) | tier_c on GET /api/v1/me |
| Report documents sealed under a key for your tenant alone | LightHouse and AWS KMS (Atlantic’s) | Offboarding destroys the key |
| Data encrypted at rest; database private, across availability zones | AWS (Atlantic’s) | Under NDA |
| Export with a checksum manifest, at any time | LightHouse (Atlantic’s) | POST /api/v1/exports |
The engine, in your account
Section titled “The engine, in your account”| Control | Enforced in | How to verify |
|---|---|---|
| The gateway is the only path to a model | Your gateway (yours) | Every call is a model_call record |
| Spending caps and kill switches, before every call | Your gateway (yours) | GET /api/v1/refusals, GET /api/v1/kills |
| Global inference profiles refused | Your gateway (yours); cloud guardrail policy | Your policy cannot enable one |
| Personal data masked before inference | Your gateway (yours) | Your policy’s masking section |
| The tool gate: run token, Cedar, scopes, the person’s own credential | Your engine (yours) | tool_denials_total, by reason |
| Retrieved text fenced; injection signals counted | Your engine (yours) | Screening counts in GET /api/v1/refusals |
| Approvals only as signed commands from a person | Your engine and handler (yours) | Other routes are refused and logged |
| No long-lived cloud keys | Your cloud’s identity service | No IAM users or access keys in the stack |
| Nothing listens for Atlantic; connections opened from your side | Your network (yours) | Your firewall rules |
Interfaces
Section titled “Interfaces”| Control | Enforced in | How to verify |
|---|---|---|
| Nonce-based content security policy; no inline scripts | The portal (Atlantic’s) | The Content-Security-Policy header |
HSTS, nosniff, framing denied, referrer and permissions policies |
Portal and API (Atlantic’s) | curl -sI |
| Branding as values, never CSS; images re-encoded | LightHouse service (Atlantic’s) | Upload an SVG with a script: refused |
| MCP read only and stateless | LightHouse service (Atlantic’s) | tools/list |
| Request bodies capped and read in chunks | LightHouse service (Atlantic’s) | A 300 KB body is refused |
| Idempotency keys on commands; versions on settings | LightHouse service and database (Atlantic’s) | The same command_id twice |
| Append-only audit log | The database (Atlantic’s) | GET /api/v1/audit |
| Per-key rate limits on the read API | Coming | |
| OAuth sign-in on the MCP endpoint | Coming |
Build and supply chain
Section titled “Build and supply chain”| Control | Enforced in | How to verify |
|---|---|---|
| Secrets, keys and syntax checked on every commit | Atlantic’s repositories | Under NDA |
| Secrets, SAST, IaC, dependency and Dockerfile scans in every pipeline | Atlantic’s CI | Under NDA |
| Images pinned by digest, non-root, no package installer | Image builds | Scan the image yourself |
| Signed telemetry: Ed25519, five-minute window, replay refused | Your deployment signs; LightHouse intake verifies | deployment_keys on GET /api/v1/me |
| Portal tested on every change: CSP violations, accessibility, hostile input | Atlantic’s CI | Under NDA |
| Red-team suite for Octy before a first pilot | Atlantic’s CI and a live run | GET /api/v1/evals |
| An independent third-party penetration test report | Not yet available |
Certifications
Section titled “Certifications”Atlantic holds no security certification today. LightHouse is audit-ready: each control above is enforced in code or in the platform, and each says how to verify it.