Skip to main content

Architecture and Data Flow

An on-premise installation runs as Docker containers on one VM. Only the web app and the API are published; everything else stays on the internal Docker network.

Ports

Trust boundaries

  • Users → API: every endpoint requires a signed-in user unless explicitly public (sign-in, health). Access tokens live 15 minutes and are bound to a revocable session.
  • API → database: the API uses quixa_app, which only has rights on the Quixa database (read, write, schema changes). sa is used once at installation by quixa-db-init and by the operator for backups.
  • API → APIs under test: every connection goes through the outbound guard. Cloud metadata and link-local addresses are always blocked; loopback and the Docker network are blocked; private ranges are reachable only when listed by the operator (OUTBOUND_ALLOWED_CIDR) or, on single-customer installations, by a workspace administrator.
  • API → script sandbox: JavaScript/TypeScript script nodes run in isolated-vm isolates (separate V8 heap, 64 MB memory limit, 10 s time limit, no Node.js APIs, no file system or network access).

What leaves your network

Secrets are removed from AI prompts before they are sent: header values and JSON fields named like credentials, bearer/basic tokens, JWTs and provider keys are replaced with {{secret}}. See AI data handling.

Data at rest