Skip to content
Trust Center

What we do with your data, and what we have not built

A gateway sees every prompt your company sends. That is a serious responsibility, so this page is written to be checked rather than believed — every claim below points at the code or the configuration that makes it true, and the things Multigrid does not have are listed as plainly as the things it does.

Compliance

Where Multigrid actually stands

Multigrid holds no security certifications today
There is no SOC 2 report, no ISO 27001 certificate and no completed penetration test. Multigrid launched in 2026 and has not been through an audit. If your procurement process requires any of those, this is not yet the right product for you, and we would rather you knew that now.

What is in place

Provider keys are encrypted at rest

AES-256-GCM, with the master key held in the deployment environment and never in the database. Only the last four characters of a key are ever displayed. See lib/crypto.ts.

The billing ledger is append-only

Balances are the sum of immutable ledger entries, not a mutable number. An audit script reconciles the two and exits non-zero on any drift.

Every request is attributed

Each API call is stored with its account, key, model, token counts and exact cost in micro-dollars, and is exportable as CSV.

Traffic is TLS-terminated and origin-locked

The origin accepts connections only from the CDN edge; certificates are issued and renewed automatically by Let's Encrypt.

What is not

  • No SOC 2, ISO 27001, ISO 27701, or CAIQ
  • No HIPAA BAA — do not send protected health information
  • No independent penetration test
  • No SSO, SCIM, data residency pinning, or private deployment
  • No uptime SLA with service credits
Controls

How the platform is built

Encryption

TLS between you and the edge, and again between the edge and the origin. Provider keys you paste are encrypted with AES-256-GCM before storage, using a master key held in the deployment environment and never in the database — see lib/crypto.ts. Only the last four characters are ever shown again. There is no HSM and no KMS: the master key is an environment variable.

Tenant separation

Every account is a row-scoped logical tenant, and server actions re-derive your account from the session rather than trusting anything the browser sends — so a request cannot name someone else's account. There is no single-tenant or dedicated deployment option.

What is stored

Metadata only: model, token counts, cost, latency, and the key that made the call. Prompt and completion bodies are not stored — the requests table has no column for them. The exception is deliberate and visible: a cached response, and the items of a batch job, do hold content until they expire or you delete them.

Auditable billing

The ledger is append-only. A balance is the sum of its entries rather than a number that gets overwritten, and scripts/audit-balances.ts reconciles the two and exits non-zero on any drift. Every charge traces back to the request that caused it.

Resilience, and its limits

The gateway retries a failed provider and fails over to the next one in your routing policy. Below that, plainly: Multigrid runs as a single process on a single server in one region. There is no multi-region failover, no active-active, and no tested recovery objective. The database is snapshotted daily.

Data flow

Where a request goes

Six hops, in order. There is no region pinning: the server is in Germany, the model providers are where they are, and a request goes to the provider serving the model you asked for.

  1. 1Your clientTLS to the Cloudflare edge, then a second TLS connection to the origin, which accepts traffic from nowhere else.
  2. 2AuthenticationThe API key is checked before the request body is read, and resolves to exactly one account.
  3. 3GuardrailsIf you enabled them, pattern rules run in-process and either block the request or flag it. They match patterns — there is no model-based injection scoring.
  4. 4Cache lookupAn exact-match lookup keyed on your account plus the whole request. A hit costs nothing; any change to the parameters is a miss rather than a stale answer.
  5. 5Provider dispatchYour routing preferences choose the provider. If you have supplied your own key it is used, and nothing is charged.
  6. 6LoggingMetadata is recorded — model, token counts, cost, latency. Prompt and completion bodies are not: the requests table has no column for them.

What we never do

  • Train any model on your prompts, completions or metadata
  • Sell, share or license customer data to anyone
  • Route to a provider your routing preferences exclude
  • Store prompt or completion bodies in the request log — there is no column for them

Reporting a vulnerability

Please report it — quietly, and before disclosing it anywhere else. Use the contact form, which writes straight to the database and is read by the person who maintains this. It needs no account: a researcher who has to sign up before they can warn us is a researcher who does not warn us.

There is no bug bounty, no PGP key and no response-time commitment. Multigrid is one person; a report will be read and answered, but not on a clock. Good-faith research that stops at the first sign of another customer’s data is welcome.

Report it here
Sub-processors

Everyone who touches your data

Two lists: the infrastructure this service runs on, and the inference providers a prompt can be forwarded to. There is no notification list to subscribe to yet — check this page, or watch the changelog.

Sub-processorPurposeData location
Hetzner Online GmbHThe server the application and its database run onGermany (Nuremberg)
CloudflareDNS, TLS termination at the edge, and DDoS protectionGlobal edge network
Stripe Payments EuropeCard payments for credit top-ups. Receives your name, email and card details directly — card numbers never reach a Multigrid serverIreland, with processing in the US
OpenAIModel inference — a prompt routed to a model this provider serves is forwarded to them in fullSee their own documentation
AnthropicModel inference — a prompt routed to a model this provider serves is forwarded to them in fullSee their own documentation
GroqModel inference — a prompt routed to a model this provider serves is forwarded to them in fullSee their own documentation
DeepInfraModel inference — a prompt routed to a model this provider serves is forwarded to them in fullSee their own documentation
Together AIModel inference — a prompt routed to a model this provider serves is forwarded to them in fullSee their own documentation
OpenRouterModel inference, brokered — a prompt routed to a model served through OpenRouter is forwarded to them in full, and onward by them to whichever provider actually runs the model. That onward provider is their choice, under their terms, and is not named hereSee their own documentation

The inference rows are every provider this deployment holds a key for, read at request time rather than kept by hand. A prompt goes to exactly one of them — whichever serves the model you asked for — and any of them can be excluded from your account with one routing preference. We do not publish their retention or training terms; see the providers page for why, and for a link to each one’s own documentation.

Trust Center · Multigrid