A trust layer for enterprise AI
CatyAI is the AI infrastructure layer built by PayAi-X FZE, a Dubai-based company providing verifiable, compliant, and high-performance AI for businesses operating across the EU, MENA, and global regulated markets.
Where most AI providers ask customers to trust the output, CatyAI lets them verify it. Every response served through the public answer endpoint is signed with an Ed25519 key, canonicalized per RFC 8785, and verifiable against a published JWKS. This turns AI from an opaque API call into an auditable artifact — required for finance, healthcare, public sector, and any vertical where “the AI told us” isn’t a defensible answer.
Cryptographic response signing
The CatyAI public answer endpoint is the only AI surface in the platform that external clients and AI crawlers consume directly. Every response is signed before it leaves the service boundary.
Signing scheme
| Algorithm | EdDSA over Curve25519, per RFC 8037 |
|---|---|
| Canonicalization | RFC 8785 JCS (JSON Canonicalization Scheme) |
| Key identifier (kid) | catyai-akl-signing-key-2026-v1 |
| Public key distribution | JWKS over HTTPS — jwks_uri field in every response |
| Signature transport | Detached signature in X-AKL-Signature response header |
| Body integrity | content_hash (SHA-256 of canonicalized payload) |
| Endpoint | POST /geo/v2/answer |
| Authentication | Dual: AI crawler User-Agent allowlist OR X-API-Key |
| Rate limit | 60 requests / hour / IP, with per-tenant quotas |
Verification flow (client-side)
// Client verification — Node.js, @noble/ed25519 import * as ed from '@noble/ed25519'; import { canonicalize } from 'rfc8785'; import { createHash } from 'node:crypto'; const res = await fetch('https://api.catyai.io/geo/v2/answer', { method: 'POST', headers: { 'X-API-Key': KEY, 'Content-Type': 'application/json' }, body: JSON.stringify({ query: '...' }) }); const payload = await res.json(); const signature = res.headers.get('x-akl-signature'); const jwks = await (await fetch(payload.jwks_uri)).json(); const jwk = jwks.keys.find(k => k.kid === payload.kid); // 1. Recompute content hash from canonical JSON const canonical = canonicalize(payload.body); const hash = createHash('sha256').update(canonical).digest('hex'); if (hash !== payload.content_hash) throw new Error('content_hash mismatch'); // 2. Verify EdDSA signature const ok = await ed.verifyAsync(signature, canonical, jwk.x); if (!ok) throw new Error('invalid signature');
Privacy by architecture
Customer data is processed in AWS eu-west-1 (Ireland). EU customer payloads do not leave the European Economic Area for processing. Cross-border transfers, where unavoidable, use AWS Standard Contractual Clauses and are documented in the customer Data Processing Addendum.
- Encryption in transit. TLS 1.2+ enforced at the load balancer; HSTS on all customer-facing domains.
- Encryption at rest. AWS-managed KMS for DocumentDB, S3, and Secrets Manager. Per-environment keys with rotation.
- Tenant isolation. Logical isolation per tenant ID in DocumentDB, Qdrant collections, and Redis namespaces.
- Right to erasure. Tenant-scoped purge endpoint; deletion propagates to vector indices and conversation logs.
- Minimization. No mock data in production.
ALLOW_MOCK=falseis enforced as a runtime invariant. - Audit trail. CloudWatch Logs with structured JSON; ECS task-level access logging on the answer endpoint.
Frameworks & control objectives
SOC 2 (Trust Service Criteria)
The platform is architected against the AICPA Trust Services Criteria for Security, Availability, and Confidentiality. Controls are documented and operated; an independent attestation is in progress with a qualified auditor.
GDPR — Regulation (EU) 2016/679
PayAi-X FZE acts as a data processor on behalf of customers, who remain controllers. Lawful basis, data subject rights, breach notification (72 h), and DPIA support are addressed in the Data Processing Addendum available on request.
EU AI Act — Regulation (EU) 2024/1689
CatyAI is delivered as a general-purpose AI infrastructure layer. Deployment-time risk classification is the customer’s responsibility; the platform provides the technical affordances required for compliance:
- Transparency — signed responses with model and provider metadata.
- Logging — immutable, tenant-scoped invocation logs.
- Human oversight — pluggable review hooks on the answer pipeline.
- Provider attribution — explicit declaration of upstream LLM in every response.
AWS-only, infrastructure as code
| Region | eu-west-1 (Ireland) — primary |
|---|---|
| Compute | AWS ECS Fargate, Linux/amd64, pinned image digests — no :latest |
| Edge | Application Load Balancer + AWS WAF; CloudFront for static assets |
| Datastores | AWS DocumentDB (primary), Qdrant Cloud (vectors), Upstash Redis (cache), Supabase Postgres (auth) |
| Secrets | AWS Secrets Manager (caty/production); never written to disk or shipped in images |
| IaC | Terraform; pull-request gated; no manual console changes in production |
| Build provenance | GitHub Actions on protected branches; container images signed and scanned in ECR |
| Backups | S3 versioning enabled on content buckets; point-in-time recovery on DocumentDB |
Defense in depth at the API layer
- Authentication. Supabase Auth with Google OAuth and short-lived JWTs for the dashboard; per-tenant API keys for programmatic access.
- Authorization. Tenant scoping enforced at the data layer; row-level isolation on relational stores.
- Rate limiting. 60 req/hour/IP on the public answer endpoint, with separate per-tenant quotas; 429 with
Retry-After. - Input validation. Schema validation on all ingress; rejection of unsigned crawler traffic outside the User-Agent allowlist.
- Cache integrity. SHA-256 keying on canonicalized request payloads; no cross-tenant cache poisoning surface.
- Dependency hygiene. Automated CVE scanning on every PR; production deploys gated on a clean scan.
Detection, response, disclosure
CloudWatch alarms feed an on-call rotation. Severity levels and response targets are defined in the runbook. Customers are notified of confirmed incidents affecting their data within 72 hours, in line with GDPR Art. 33.
| Detection | CloudWatch metrics + log filter alarms; signature verification failures alerted |
|---|---|
| Triage SLO | SEV-1 acknowledged within 15 minutes, 24/7 |
| Communication | Status page; direct email to designated security contacts |
| Post-incident | RCA published to affected customers within 10 business days |
Security disclosure & questions
Coordinated vulnerability disclosure is welcomed. Please send a detailed report to security@catyai.io. We acknowledge within one business day and provide remediation timelines after triage.
Compliance, DPA, and audit questions: compliance@catyai.io.
https://api.catyai.io/.well-known/jwks.json.
Detached signatures are returned in the X-AKL-Signature response header.