Architecture

How ArmorIQ Tools is put together - the guardrails on the developer machine, the SDK, the backend enforce and telemetry path, and the read-only Console.

System Architecture

The guardrail decides and records; the Console only reads. The guardrail, through the SDK, calls the backend to enforce and to ship telemetry. The Console never enforces anything. It is a read surface over the session and tool evidence the backend has already stored. That separation is why the Console can hold to the Honesty Principle: it renders only what was actually recorded.

Components

Guardrails (client side)

  • ArmorClaude (armorClaude/): the guardrail for Claude Code, installed with curl -fsSL https://armoriq.ai/install_armorclaude.sh | bash. It hooks the assistant's tool calls, evaluates each against workspace policy, and emits session telemetry (tool calls, policy decisions, timing, MCP categories, connection events).
  • ArmorCodex (armorCodex/): the same guardrail for OpenAI Codex. Younger than ArmorClaude; the install path is less mature (see Status).

SDK (the wire between guardrail and backend)

  • armoriq-sdk-customer-ts (TypeScript) and armoriq-sdk-customer (Python): capture intent, carry device identity through login, redirect a completed login to tools.armoriq.ai, and call the enforce endpoint. The guardrails depend on the telemetry SDK so a guardrail cannot silently fail to send data.

Backend and policy plane

  • conmap-auto (NestJS, api.armoriq.io): the API the guardrail and the Console both talk to. It owns SDK enforce (POST /iap/sdk/enforce), session and tool observability, the tools catalogue, analytics aggregation, and streaming chat. Data lives in PostgreSQL via Prisma.
  • OPA PDP: Rego policy evaluation (armoriq.rego plus extensions) run as a sidecar the backend calls. Evaluation is blocking: if OPA fails, the tool call is denied, not silently allowed.

Frontend

  • armoriq-console (the Console at tools.armoriq.ai): Vite, React 19, and Tailwind v4, deployed on Vercel. Feature slices live under src/features/ (sessions, analytics, chat, policy-studio, mcp, team, api-keys, tokens, home, and more). It reads the backend over REST with a bearer JWT.

End-to-End Flow: From Install to Insight

One-line install

curl -fsSL https://armoriq.ai/install_armorclaude.sh | bash installs ArmorClaude (or ArmorCodex). Under a minute, no pre-config.

Auto account and workspace

The installer opens a browser and you sign in (Google or GitHub). ArmorIQ provisions the personal workspace and binds an API key; device identity persists, and the terminal resumes on its own.

Guardrail active

Every tool call the assistant attempts is checked against workspace policy. The default posture is allow-and-record, so day one is not blocked. Each decision (Allow, Deny, Hold, Error) and its timing are recorded.

See what happened

Open the Console at tools.armoriq.ai: Sessions, session detail, tools catalogue, analytics, AI chat.

Set rules

Policy Studio lets you write plain-language rules ("always ask before deleting files"). They take effect on the next session; no restart.

The loop for a non-technical user is: install once, set rules, review anytime.

On this page