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).sais used once at installation byquixa-db-initand 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-vmisolates (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.