Security

Built so a mistake stays small

A gateway holds the keys to your AI spend, so it is designed around containment: separate data per organisation, secrets that never leave, and limits that fail closed.

Isolation between organisations

  • Each organisation's keys, usage and logs live in a database file of its own. No table holds more than one organisation's data, so no query can cross between them.
  • Each organisation signs in on its own subdomain, and an address that does not belong to an organisation answers exactly as one that never existed.

Secrets

  • Vendor keys are encrypted with AES-256-GCM under a master key held outside the database. They are decrypted in memory only for the upstream call.
  • No API ever returns a vendor key, a virtual key's secret or a two-factor seed, and none of them is written to logs. Our tests read the raw database files to prove a vendor key is never stored in plain text.
  • Virtual keys are shown once, at creation, and stored only as a hash.

Signing in

  • Passwords are hashed with argon2id. Two-factor authentication is mandatory for every role, with ten single-use recovery codes.
  • Sessions are bound to the browser that created them, sign-in attempts are rate limited, and a sign-in from a new device is reported by email.
  • The operator's console can be restricted to a list of IP ranges.

Network controls

  • Every virtual key carries IP rules: an allowlist, allow-anywhere, or pinned to the first address that used it.
  • Traffic is served over HTTPS only, and client addresses are taken from our own proxy, never from a header a caller can set.

Failing safely

  • Rate limits, budgets and credit are checked before a request is sent to a vendor. If the service that enforces them is unreachable, requests are refused rather than allowed through without limits.
  • A vendor key that the vendor rejects is marked unhealthy and taken out of rotation.

Audit and data handling

  • Every change to keys, members, vendor keys, credit and settings is recorded with who made it and the values before and after.
  • Prompts and completions are not stored unless prompt logging is switched on for a key, and stored bodies are purged after seven days by default.
  • Usage records are kept for thirteen months by default, then deleted.

Found something?

If you believe you have found a security issue, tell us through the contact form and choose Support. We will get back to you quickly and keep you informed while we fix it.