§01  /  Security

Security you can audit,
not just trust.

MFA and SSO on every account. Step-up auth on every destructive action. Tenant isolation by design, an encrypted credential vault, and an insert-only ledger signed per tenant. Every claim on this page maps to something you can inspect in the product.

posture · tenant acmeAll controls active
MFA coverage247 / 247 members
SSOSAML 2.0 · Okta · SCIM on
Credential vaultFernet · per-tenant key
Ledgerinsert-only · hmac-sha256
Data residencyEU (Frankfurt)
Last export to SIEM4m ago · streaming
insert-only ledgerper-tenant keysstep-up auth
§02  /  Identity & access

Who can sign in,
and how.

Multi-factor on every account, single sign-on for organisations, and the same auth surface across the app, the API and the SDK. The basics, done properly.

Multi-factorRequired by policy

TOTP authenticator plus recovery codes.

Any RFC 6238 authenticator app. Ten single-use recovery codes issued at enrolment, hashed at rest, regenerable - and admins are notified when a member regenerates them.

TOTP · 30s windowRFC 6238
10 recovery codeshashed · single-use
Enrolment enforcedworkspace policy
Device resetadmin + step-up
Single sign-onTeam tier and above

SAML 2.0, OIDC and SCIM.

Bring Okta, Entra ID, Google Workspace or any compliant IdP. SCIM provisioning on Enterprise, so deprovisioning in your directory ends the Lyhnis session too.

SAML 2.0SP-initiated · signed
OIDCPKCE
SCIM 2.0enterprise
SSO-only modepasswords disabled
§03  /  Step-up authentication

Sensitive actions
ask for proof.

Deleting a workflow, rotating a credential, removing MFA, dropping a tenant - for those, an active session is not enough. The user re-authenticates every time, and the re-auth is itself an audit entry.

01

A destructive action is requested.

The API marks the route as sensitive. No "recently authenticated" grace window, no session-age exemption, no admin bypass.

403 · step_up_required
02

Re-authenticate to confirm.

The user proves possession again - TOTP code, or a fresh IdP assertion under SSO-only mode. The challenge is bound to the specific action.

challenge · bound to action_id
03

It proceeds, fully audited.

Two ledger entries: the step-up itself, then the action. Both signed, both actor-tagged, both exportable to your SIEM.

2 entries · signed
§04  /  Organisation policies

What admins enforce,
workspace-wide.

Workspace administrators set the security floor. These policies inherit to every member, every API key and every workflow automatically - there is no way to weaken them from inside a session. Policy changes are themselves audited, behind step-up auth.

Workspace policies · Acme CorpInherits to 247 members
MFA required for all members
Members without an active second factor cannot access the workspace.
Step-up auth on destructive actions
Always on. Re-authentication required before deletes, rotations and disables.
Always on
SSO-only login
Password authentication disabled. Members sign in through the configured IdP.
Session timeout
Idle sessions terminate after 8 hours. Active sessions max out at 24 hours.
8h / 24h
IP allowlist
Restrict access to known CIDR ranges. Workflows and API keys honoured separately.
API key scoping
Per-key permission grants. No global keys - every key declares its scope.
Enforced
Recovery code regeneration alert
Notifies admins when any member regenerates their recovery codes.
§05  /  Data & secrets

Isolated by design.
Encrypted at rest.

Every tenant is a hard boundary - data, files, credentials and audit ledgers. Credentials never appear in logs, never come back from an API read, and never leave the vault except to execute a single activity.

Tenant isolationPer-tenant

A boundary that does not leak.

Tenant scope is applied at the query layer, not the view layer: every read carries the tenant, and there is no code path that returns a row without one. Storage, credentials and ledgers are partitioned the same way.

Datarow-level tenant scope
Filesper-tenant bucket prefix
Credentialsper-tenant key derivation
Ledgerper-tenant hmac key
Credential vaultWrite-only surface

Encrypted. Never returned.

Fernet (AES-128-CBC + HMAC) with keys derived per tenant. A credential read returns metadata only - name, type, last-used, rotation date. The secret decrypts inside the worker, for one activity, and is redacted from every log sink.

GET /v1/credentials/cr_8812
{
  "name": "stripe_live",
  "type": "API_KEY",
  "secret": null,          # never returned
  "last_used": "2026-05-26T14:32:08Z",
  "rotated_at": "2026-04-02T09:11:00Z"
}
§06  /  Audit ledger

The audit log is
the security control.

Not a debugging convenience - a tamper-evident record of every action in the platform. Insert-only at the database level. Each entry signed with HMAC-SHA256 over a per-tenant key. Streamed to your SIEM in real time.

TimeOperationActorResolutionDetailState
14:41:22.008credential.rotateHumanadmin@acme · step-upstripe_live · cr_8812success
14:41:19.744auth.step_upHumanadmin@acme · totpbound to action_9f21verified
14:32:08.114saas.stripe_refundAgentsonnet · tool #4$0.019 · 8.2k toksuccess
14:31:55.802human.approvalHumanops@acme · slackpaused 2d 04happroved
14:12:40.310policy.updateHumanadmin@acme · step-upip_allowlist → onsuccess
14:02:11.900auth.loginSystemsaml · okta · mfa ok203.0.113.24 · allowedsuccess
Insert-only · no UPDATE, no DELETE grantHMAC-SHA256 · per-tenant key · chain verifiableRetention: 90d → 7y by tier
01

Insert-only

The application role holds no UPDATE or DELETE grant on the ledger table. Not policy - permissions.

02

Signed per entry

HMAC-SHA256 over a per-tenant key, chained so a removed row is detectable on export.

03

Actor-typed

AGENT, HUMAN or SYSTEM plus the resolution source, on every single row.

04

Streaming export

NDJSON for arbitrary ranges, CSV for auditors, real-time sink into your SIEM.

§07  /  Data protection

Your data, on your terms.

Where it lives, who touches it, how long it stays and how it leaves - documented, and answerable by a person rather than a form.

ResidencyPer tenant

Choose EU (Frankfurt) or US (Virginia) at provisioning. Data, files, credentials and ledger stay in-region - including backups.

Processing termsDPA

A standard Data Processing Addendum covering roles, security measures, subprocessors, breach notification and transfer mechanisms.

Read the DPA
SubprocessorsPublished

Every third party in the processing chain, what it does and where it runs. Material changes are announced 30 days ahead.

See the list
Retention & deletionBy tier

Ledger retention runs 90 days to 7 years by plan. Deletion requests are executed within 30 days and confirmed in writing.

Questions to privacy@lyhnis.comPrivacy Policy
§08  /  Verify

Verify before you trust.

For security teams

Install the SDK.

Read the docs, then ask us for the report. We would rather you checked.

$pip install lyhnis
Read the docs
For operations

Open the canvas.

Drag activities, place your approval gates, hit run. No local setup, same execution layer.

Book a demo Talk to engineering
See pricing