$5 free credits when you sign up
Security

Security you can audit, not just take our word for

NemoRouter is the gateway for every prompt, every key, and every dollar of spend. We built it the way auditors expect — encryption, RLS, virtual keys, guardrails, and an audit trail that never goes silent.

security · architecture · contract

Architectural invariants

TLS1.3
RLS-protected tables22 / 22
USING (true) policies0
Master-key surfaceisolated
Customer LLM authvirtual keys only
Reserve + settleenforced
CSPHSTSSOC 2 controlsGDPRHIPAA-eligible
Uptime SLA
99.9%

Backed by managed Cloud Run + Supabase

Encryption
AES-256

At rest + TLS 1.2+ in transit

RLS-protected tables
22

Every Nemo table, no exceptions

Master-key surface
0 customer paths

LLM traffic uses virtual keys only

Built on the controls security teams already audit for

  • SOC 2 Type IIAudit in progress
  • GDPRCompliant
  • HIPAABAA available
  • ISO 27001Aligned
  • Postgres RLSEnforced
  • CSP + HSTSEnforced
Architecture

Always-in-path, by design

Every request flows through Nemo Backend before it touches a provider. Auth checks, RLS scope, credit reservation, and guardrails all live on the same hop — there is no shortcut path for the frontend to call an LLM directly.

Request flow

  1. Client / SDK

    Bearer sk-nemo-…

    Only virtual keys leave the client; master keys never ship.

  2. Frontend (Next.js)

    :3001 — Cloud Run

    Server actions add auth + RLS scope before forwarding.

  3. Nemo Backend

    :8090 — FastAPI

    Auth, credit reserve, guardrails, observability — in path.

  4. Nemo Intelligent Proxy Router

    In-process ASGI

    Cost tracking, rate limits, provider fallback chains.

  5. Provider

    Vertex / Anthropic / OpenAI

    Outbound traffic only; no inbound provider calls.

The in-process Nemo Intelligent Proxy Router ASGI app runs in-process inside Nemo Backend — no separate :4000 service to harden, no extra network hop to attack.

Defenses

Six layers, all on by default

Every NemoRouter customer gets the full security posture from day one. No “Enterprise tier” for SSO, audit logs, or guardrails — these are not features we sell, they are guarantees we ship.

Encryption — at rest and in transit

TLS 1.2+ on every public endpoint with HSTS preload, AES-256 for data at rest. API keys are hashed on creation; the full plaintext is shown once and never stored anywhere.

  • TLS 1.2+ enforced; HSTS preloaded for the apex domain
  • AES-256 at rest across Postgres, Redis, and object storage
  • Virtual keys hashed with SHA-256 — plaintext shown once
  • Master keys live only in trusted services, never in client bundles

Tenant isolation by default

Every Nemo table has Row-Level Security enabled. Cross-tenant reads or writes are impossible at the database layer — not "discouraged," denied. Service role bypasses RLS only inside server-side API routes.

  • RLS on all 22 Nemo tables (Owner, Admin, Member, Viewer policies)
  • organization_id flows through every request as the same UUID
  • No `USING (true)` policies — every policy is tenant-scoped
  • Continuous gap-hunter scanner verifies the RLS contract holds

Virtual keys for every LLM call

Customer LLM traffic only ever uses virtual keys (sk-nemo-…). Master keys are reserved for internal management CRUD — never exposed to the dashboard, the playground, or your code.

  • Per-key spend tracking, RPM/TPM enforcement, budget caps
  • Playground stores keys in browser sessionStorage only — gone on tab close
  • Per-key revocation; deletion is immediate and cache-aware
  • Audit log captures key/team/org changes with diff + IP + actor

Hardened request path

Frontend never talks to the routing engine directly. Every request flows Frontend → Nemo Backend → in-process Nemo Intelligent Proxy Router, with auth, RLS scoping, guardrails, and credit reserve+settle on every hop.

  • CSP, X-Frame-Options, Referrer-Policy on every response
  • Stripe webhook signature verification on every event
  • Advisory locks for atomic credit operations (no TOCTOU)
  • Reserve+settle pattern means denied requests cost zero credits

Five guardrails on every request

Every prompt and response runs through built-in guardrails. PII redaction, prompt injection detection, secret scanning, abuse blocking, response scanning — included on every plan from day one.

  • PII redaction powered by Microsoft Presidio
  • Prompt-injection detection trained on adversarial corpora
  • API-key + secret scanner on prompts and completions
  • Configurable scope: org > team > key with override semantics

Audit-grade observability

Every administrative action, key change, guardrail trigger, and budget event is logged with the actor, source IP, payload diff, and timestamp. Exportable for compliance reviews.

  • Immutable audit trail — append-only, retention configurable
  • Filter by actor, entity, time, IP, action class
  • CSV + JSON export for SIEM ingestion
  • 90-day request log retention; longer on Enterprise
Deep Dive

Postgres Row-Level Security, on everything

Multi-tenancy is enforced at the database, not the application layer. The application can have bugs; the database refuses to return rows from the wrong tenant.

Tenant isolation

The same UUID flows through every layer

organization_id is the same value in your Bearer key, in the Frontend session, in Nemo Backend, in the in-process Nemo Intelligent Proxy Router admin schema, and in every nemo.* table. There is no mapping table to drift, no sync layer to compromise.

  • Owner / Admin / Member / Viewer roles enforced via RLS policies
  • Service role bypasses RLS only inside server-side API routes
  • Continuous gap-hunter scanner verifies cross-tenant denial
  • Org switch invalidates every TanStack Query cache key
psql · nemo schema

RLS policy spot-check

organization_billing4 / 4 policies
credit_balances4 / 4 policies
guardrails4 / 4 policies
audit_trailappend-only
USING (true) policies0
22 tables88 policiesno gaps
Money Safety

Credits never go negative — under load, under failure, under attack

Every LLM request reserves credits before forwarding and settles after the cost header arrives. Failures release the reservation. There is no path to a negative balance because the database refuses to write one.

Reserve + settle

Atomic mutations under advisory locks

The credit ledger uses Postgres advisory locks for atomic increment/decrement. Concurrent writes serialize at the row level. Webhooks are idempotent on Stripe event id. Reservations expire automatically if a request never settles.

  • reserve_credits → forward → settle_credits with cost from x-nemo-response-cost
  • release_reservation called on every failure path (4xx/5xx/timeout/circuit-break)
  • 402 returned cleanly when a key would breach budget — no partial debit
  • Daily ledger parity check verifies sum(transactions) == balance
credit_ledger · architecture · contract

Money-safety invariants

Atomic mutationsadvisory locks
Reserve → settleevery LLM request
Release on failure4xx / 5xx / timeout
Negative-balance writesblocked at DB
Webhook idempotencyon Stripe event id

Engineering principle

Built audit-ready from day one — not retrofitted before a procurement call.

RLS, virtual keys, master-key isolation, reserve+settle credit safety, and the audit trail are non-negotiable invariants in our codebase — enforced by tests that block merges, not by promises on sales calls.

Compliance

Where every framework actually stands

We state status precisely — achieved, in progress, or available on request. A formal SOC 2 Type II audit is underway; we will not call it certified until the report is signed.

Audit in progress · Q3 2026

SOC 2 Type II

NemoRouter operates SOC 2-aligned security, availability, and confidentiality controls today — encryption, access control, change management, audit logging, tenant isolation. A formal SOC 2 Type II observation period is underway; the audited report is targeted for Q3 2026. Our infrastructure substrate (Google Cloud Run, Supabase) is already SOC 2 Type II certified.

Controls walkthrough
Aligned — certification planned

ISO/IEC 27001

Information security management practices aligned to ISO/IEC 27001 Annex A controls — asset management, access control, cryptography, operations security, supplier relationships. A formal ISO 27001 certification is on the roadmap; the infrastructure substrate (Cloud Run, Supabase) is independently ISO 27001 certified.

Controls walkthrough
Compliant — DPA available

GDPR

Compliant with the EU General Data Protection Regulation. Data Processing Addendum available for signature, EU Standard Contractual Clauses with subprocessors, data-subject access and erasure tooling built into the dashboard, and EU data residency available on Enterprise.

Read the DPA
BAA available on Enterprise

HIPAA

NemoRouter supports HIPAA-eligible workloads. A Business Associate Agreement (BAA) is available for healthcare customers processing protected health information — request one through the Enterprise team. PII redaction guardrails run on every request at no extra cost.

Request a BAA
Stripe PCI L1 — no card data on our servers

PCI DSS

NemoRouter never touches raw cardholder data. All payments are processed by Stripe, a PCI DSS Level 1 certified service provider; card numbers are tokenized client-side and never reach our servers or database. Your PCI scope for using NemoRouter is therefore minimal.

How payments work
US + EU GA · more on Enterprise

Data residency

Pin where customer data is processed and stored. US is the default footprint; EU residency is generally available on Enterprise, with UK, Canada, Australia, Singapore, and India available on request for residency-sensitive workloads.

Residency map

For the DPA, SLA, AUP, and subprocessor list, see the trust center. Procurement can request a controls walkthrough or a completed vendor security questionnaire from security@nemorouter.ai.

Disclosure

Reporting a vulnerability

If you discover a security issue, please report it responsibly. We acknowledge within 48 hours, target 7 days for critical fixes, and follow coordinated disclosure.

Data residency

Pin where your data lives

Customer data lives in managed Postgres with at-rest encryption, replicated within a single region. United States is the default footprint. EU residency is generally available on Enterprise; the UK, Canada, Australia, Singapore, and India are available on request — covering GDPR data-locality requirements and the residency expectations of the EU AI Act.

United States (us-central1)GA
US East (Virginia)GA
European Union (europe-west4)On request
EU North (Stockholm)On request
United Kingdom (London)On request
Canada (Montréal)On request
Australia (Sydney)On request
SingaporeOn request
India (Mumbai)On request

Default US runs on us-central1; EU on europe-west4 with Supabase Postgres co-located and subprocessors signed under EU SCCs. Need a region pinned? sales@nemorouter.ai.

Session & tokens

Idle, refresh, revoke — predictable session policy

Sessions are managed by Supabase Auth. Idle timeout is enforced from the dashboard, refresh tokens rotate transparently, and users can revoke active devices from their account page.

  • Idle timeout — 30 minutes (default). Inactive dashboard sessions surface an idle warning at 25 minutes and force re-auth at 30. Configurable per-org for enterprise.
  • Refresh-token rotation. Refresh tokens rotate on every use (Supabase Auth). A leaked refresh token is invalidated the moment its successor is issued, and the user is force-signed-out across all devices.
  • Device management. Account → Security lists every active session by device, OS, and last-seen IP, with one-click revocation. Useful when a laptop walks off — kill the session before the attacker reaches the dashboard.
  • Session vs API key. Dashboard sessions sign management calls only. Every LLM request uses a virtual API key (sk-nemo-…) with its own RPM/TPM/budget caps — a compromised dashboard session cannot run unbounded inference.
FAQ

Common security questions

Security review · 30 minutes

We will walk your security team through the controls

No NDAs to start, no sales gate. Bring your auditor — they will get the same answers we give the engineering team.