ArtzAIn

Architecture · the customer view

Your boundary, mapped.

Before Legal, Security, or the CISO says yes, they ask the same three questions: what gets installed inside our perimeter, what does it need to run, and exactly which bytes leave. This page answers all three — drawn from the control plane's own documentation, nothing aspirational.

sdk artzain 0.3.x · python ≥ 3.10 · deploy: compose | helm | terraform · verified 2026-08

Two ways to run it

Same engine, same policies. You choose the perimeter.

Everything below follows from this one choice — and you can start on one and move to the other without changing a line of application code.

In your VPC — the pilot default

The whole control plane, inside your perimeter

The engine deploys next to your own PostgreSQL — Docker Compose, Helm, or Terraform. Signing keys are generated on your hosts and never leave. Designed for zero vendor callouts; runs air-gapped with a pre-staged model cache. Nothing is sent back to CogNEXUS Labs — no license pings, no usage phoning home.

See the VPC boundary
Managed cloud

SDK only — decisions on the hosted plane

You install one zero-dependency package and point it at the managed control plane. Requests are evaluated in memory over TLS; what persists is cryptographic evidence — a sha256 of the payload, never the payload itself. First governed decision in minutes: pip install artzain.

See the managed boundary

Option one · your VPC

Everything inside the fence.

Engine, ledger, keys, and dashboard all run where your other regulated systems run. Outbound traffic exists only where you create it.

YOUR BOUNDARY your VPC · on-prem · air-gapped with a pre-staged model cache Your apps & agents + the artzain SDK, the Node client, or an envelope base_url swap — all pointed at your instance HTTPS ArtzAIn control plane — your instance Decision API · governance envelope · agent crew · dashboard core profile: CPU-only — no GPU, no local model full profile: + self-hosted Gemma inference on your GPU deploy: Docker Compose · Helm · Terraform — schema self-creates on boot, no migration scripts to run fails closed: if the ledger is unwritable, it refuses to decide PostgreSQL — yours receipts ledger · policy bundles · context · graph — all Postgres-native: no graph database, no separate vector store required Ed25519 signing keys generated locally on first boot; private keys never leave the host back the key directory up — unrecoverable if lost S3-compatible backups — yours, optional 4-hourly database backups, boot auto-restore. Any S3 API works — on-prem object storage included. Operator browser dashboard served from your instance; policy bundles signed in-browser — signing keys stay on the machine Your data connectors CRM · mail · drive · payments · code — plus read-only agent discovery across MCP, Kubernetes, and CI/CD only what you enable Model download — optional full profile, first boot only; pre-stage the cache and it never happens at all ArtzAIn managed cloud not contacted — no license pings, no usage phoning home no traffic Your auditor you hand over an evidence bundle; artzain audit verify recomputes every hash and signature offline — zero trust in any server you export
Engine, ledger, keys, and dashboard inside your perimeter. Outbound traffic exists only where you create it — the connectors you enable, and one optional model download. The only artifact designed to leave is the evidence bundle you choose to export.

Option two · managed cloud

One package on your side. Evidence, not content, on ours.

Three integration paths cross the wire — the Decision API, the governance envelope for agents you can't modify, and the policy control plane. Telemetry is a fourth, dashed: off until you turn it on.

the wire — TLS :443 YOUR BOUNDARY laptop · CI · your VPC — your code never leaves it Your application / agent code business logic, prompts, data — nothing is uploaded as code decide(action, target, payload, kind) Python SDK — pip install artzain Python ≥ 3.10 · zero dependencies · pure stdlib local guards — the same code the plane runs: injection screening · destructive-action guard tool-call contracts · PII counts · kill switch prompt defense · hash-chained local audit no API key → guards run locally, offline:true — zero egress, no sealed receipt Brownfield agent — any OpenAI-compatible client no code change beyond one line: base_url → …/api/v1/envelope/v1 CLI · your operator's browser artzain policy keygen — the private key is created here and stays here (CLI file or browser WebCrypto) artzain audit verify — evidence recomputed offline Nothing on this side needs Docker, a GPU, or a vendor library. Node option: @cognexuslabs/artzain (remote-only client) POST /api/v1/decisions agent_did · action · target · payload allow / deny / review + receipt id optional SDK events — redacted previews only chat completion — prompt + tool calls response + decision headers signed policy bundle — rules + signature (only the public key registers) evidence bundle — receipts · seals · proofs ARTZAIN MANAGED CLOUD the hosted control plane — multi-tenant Decision engine — the enforcer pipeline gates: kill switch · ledger breaker (fails closed) privacy-guardian → prompt-injection → destructive-action → tool contracts → your bundle → compliance-warden → fraud-sentry + framework overlays: EU AI Act · NIST · ISO 42001 · SOC 2 worst vote wins · receipt sealed before the response returns payload evaluated in memory — never written to disk Sealed ledger — the system of record hash-chained · Ed25519-signed · Merkle-sealed ≤ 60 s payload stored as sha256 only — never raw; PII recorded as counts, never values retained 7 years · append-only, enforced in the database Policy bundles · review queue · dashboard your signed bundles: draft → shadow → active — unsigned or tampered uploads rejected at the gate review outcomes resolved by your operators; each resolution is itself a sealed receipt telemetry surfaces show redacted previews only envelope forward Your model provider — third party forwarded with your provider key (held encrypted), only after the inbound decision allows; the output is decided too
Decision payloads do cross the wire — that is what gets evaluated — but they are processed in memory and persisted only as a hash plus redaction-safe findings. With no API key configured, the SDK runs the identical guard library locally and nothing leaves your boundary at all.

What crosses the wire — and what the plane keeps.

The managed plane's privacy invariant, row by row. To prove which payload was decided, hash your candidate and compare — the record is built so you never have to trust us to answer.

What travelsDirectionWhat the plane keepsNotes
Decision payload — the text or tool call being gated (≤ 256 KiB) you → plane Hash only Evaluated in memory by the enforcer pipeline; the sealed receipt records the payload's sha256, never the payload.
Decision metadata — identity, action, target, kind, context tags you → plane Sealed receipt This is the audit record: the verdict, every enforcer's vote and findings, and the exact signed policy version that ruled. Retained 7 years.
Personal data inside payloads you → plane Counts only Checksum-validated detectors report ssn: 2-style counts; matched values never appear in findings or receipts.
SDK telemetry — optional you ⇢ plane Event rows Only with an API key set. Event type, package and runtime versions, token counts, and a ≤ 96-character redacted preview — never full prompts. No key, no traffic.
Envelope chat traffic — brownfield agents you → plane → provider Hash only The full prompt transits for governance, then forwards to your own model provider using your upstream key, held encrypted. Inbound and output decisions both seal — hashes and findings, not content.
Policy bundles you → plane Signed rules Rules plus your Ed25519 signature. The private key is generated on your side — CLI or in-browser — and never transmitted; only the public key registers.
Connector content — only if you enable data connectors provider → plane Context store Pulled into the context engine for retrieval, with the redaction boundary at ingestion: identifiers become type tokens before any row persists. Opt-in per connector; tokens held encrypted.
Evidence bundle plane → you You keep it Self-contained export — receipts, seals, Merkle proofs, framework artifacts. artzain audit verify recomputes everything offline: zero network, zero server trust.
Your source code · model weights · private signing keys Never sent There is no code-upload path in the product. Guards run either in your process or against the single request payload you send.

The honest caveat: on the managed plane, the content you gate does transit our infrastructure — in memory, over TLS — even though it is never persisted. If the transit itself is unacceptable — regulated data, air-gapped estates — that is exactly what the VPC deployment exists for.

The inventory

What gets installed, component by component.

Everything on your side is deliberately light: one pure-stdlib package, one config change, or one container image — your choice of depth.

Python SDK

pip install artzain · v0.3.x · Apache-2.0
  • Python ≥ 3.10, zero mandatory dependencies — pure standard library, any OS
  • Full local-guard library — the same code the plane's enforcers run, mechanically synced
  • decide() client with an offline fallback and a hash-chained local audit trail
  • CLI: login · quickstart · audit export / verify · policy keygen / sign / push / promote
Installed in your boundary

Node client

@cognexuslabs/artzain · Apache-2.0
  • Remote-only client: decide(), events, identity
  • No local guards yet — parity is on the roadmap; the offline fallback is Python-only today
Installed in your boundary

Governance envelope

/api/v1/envelope/v1 · per-agent credential
  • Nothing to install — repoint any OpenAI-compatible agent's base_url
  • Inbound and model-output decisions sealed per call, under the agent's own identity
  • Fails closed by default; credentials shown once, revocable from the dashboard
Config change in your boundary

Control plane — core

GPU-free image · Compose · Helm · Terraform
  • The full decision path: Decision API, sealed ledger, policy bundles, registry, dashboard
  • No local model — LLM-dependent operator features mark themselves degraded instead of crashing
  • Helm chart ships health probes, CPU autoscaling, and a persistent volume for signing keys
VPC option — your infrastructure

Control plane — full

CUDA image · self-hosted inference
  • Everything in core, plus self-hosted Gemma-family inference on your GPU
  • Powers operator chat, analysis, and code auto-fix — the decision path itself never needs the model
  • ~16 GB model cache: pulled on first boot, or pre-staged for air-gapped installs
VPC option — your infrastructure

Operator dashboard

served by whichever plane you run
  • Review queue, audit log with chain verification, policy editor, agent registry, connectors
  • Policy bundles signed in the browser — private keys never reach any server
  • Nothing to install: it ships with the plane, managed or VPC
Served by the plane

Requirements

What it takes to run.

Managed cloudDetail
RuntimePython ≥ 3.10 on any OS, or Node.js for the remote client. No Docker, no GPU, no database.
NetworkOutbound HTTPS (443) to the managed plane. The SDK sends an identifiable User-Agent for your egress allowlists.
CredentialsOne API key, from a device-code login or the dashboard. Keys can be bound to a single agent identity, so a leaked key cannot impersonate the rest of your fleet.
LatencyEngine target: P95 under 200 ms per decision, plus your round trip. Idempotent request ids make timeouts safe to retry.
Failure handlingIf the ledger is unwritable the plane refuses to decide — a typed 503. Treat it as deny; never act on a 503.
Your VPCCore profile — GPU-freeFull profile
PlatformDocker ≥ 24 with Compose v2, or Kubernetes with the Helm chart, or Terraform on AWS
ComputeCPU only; autoscaling on CPU for the decision pathNVIDIA GPU with the container toolkit (CUDA 12.1)
DiskDatabase volume + key directory+ ~16 GB model cache, pre-stageable for air-gap
DatabasePostgreSQL — bundled subchart or your own managed instance. The schema self-creates idempotently on boot; there are no migration scripts to run.
Secrets floorA strong JWT secret, and the Ed25519 key directory on a persistent, backed-up volume — the signing keys are generated there on first boot and are unrecoverable if lost.
Audit floorPostgres-backed sealing and a 7-year retention floor. The compliance bundles refuse to activate unless the deployment actually meets it — the gate is machine-checked, not a checkbox.
EgressNone required. Optional: the data connectors you enable, and the one-time model download on the full profile.

For your security review

Six claims your team will want to test.

Each of these is a property of the build, not a promise in a slide. Bring your red team.

  • Same guards on both sides of the wire. The SDK's local guards are derived mechanically from the plane's enforcer core, and the build fails on drift — local screening and plane decisions agree by construction.
  • Keys are asymmetric on purpose. Ledger-signing keys live where the plane runs — your volume, in the VPC option. Policy-signing private keys always live with you, and only public keys register. Rotation keeps historical receipts verifiable.
  • Verification needs no trust in any server. artzain audit verify recomputes every hash, chain link, Merkle root, and signature from an exported bundle, fully offline — the artifact you hand an assessor. Export profiles exist for the EU AI Act, NIST AI RMF, ISO 42001, and SOC 2, with honest non-claims: evidence supports a program; it is not a certificate.
  • Fail-closed is the default posture. If the ledger cannot be written, the plane returns a typed error rather than deciding unrecorded — and a specialist enforcer that throws becomes a deny vote unless your bundle names an explicit fallback.
  • Telemetry is opt-in by construction. Without an API key in the environment, the SDK's cloud module returns before opening a socket. When enabled, it sends redacted previews and counts — never full prompts.
  • Your review queue, your humans. Every review outcome is resolved by your operators, and each resolution is itself a sealed receipt linked to the original decision.

Next step

Walk the boundary with your architects.

A pilot starts with a scoping call and ends with the control plane live in your VPC — week four, your keys, your perimeter.