Verifies who owns an agent · what it’s allowed to do · creates an auditable record before it acts, spends, transacts, or represents a business.
Other tools control a tool call. We control the whole mission lifecycle.
This is the marketing site for KYA Mission Control by MAS-AI Technologies Inc. — the trust and execution layer for AI agent missions. Birth certificate to signed receipt across MCP, APIs, browsers, and payment rails.
The site is built to feel like the product: dark, technical, mission-control. No cartoon robots, no generic AI gradients, no hype. Cards, dashboards, glow, grid lines, motion — exactly enough.
| Section | What it does |
|---|---|
| Hero | Simulated mission-control dashboard — agent passport · trust meter (animated SVG) · multi-dimensional budget bars · 5-child lineage tree with animated dataflow · 9-step audit timeline · Ed25519-verified anchor strip |
| Killer line | “Other tools control a tool call. We control the whole mission lifecycle.” — full-bleed strip with gold-radial glow |
| Problem | Five questions every CISO is about to ask, five answers no one ships |
| Product | Eight primitives — agent identity registry, ownership verification, permission policies, risk scoring, audit logs, compliance reports, platform API, reputation |
| How it works | Five-step mission lifecycle + a 5-line SDK preview that wraps any LangChain / Anthropic Tools / OpenAI Assistants agent |
| Architecture | Owner → Entity → Agent → Mission Policy Engine → Surfaces → Audit Ledger block diagram |
| Live Mission Lab | 9 scenario cards deep-linked to a running Cloud Run console — admit / block / checkpoint / verify, on real RFC 9421 signed requests |
| Use cases | Marketplaces, SaaS, fintech, enterprise, freelance, AI insurance |
| Why now | Standards rush · distribution moment · production pain |
| Comparison | KYA vs AWS AgentCore vs Cloudflare WBA vs ERC-8004 |
| Founder + Daena traction | 10 departments × 60 capabilities × 3,086 tests · customer-zero on day one |
| Waitlist | /api/waitlist Edge route with Resend / Slack / webhook fan-out |
The whole page is server-rendered, fully responsive, scroll-reactive (parallax glow orbs + drifting grid + descending scanline), and respects prefers-reduced-motion.
The hero section deep-links into our running Mission Lab on Cloud Run. Click any card to open it on the right scenario:
| # | Scenario | Outcome | Question it answers |
|---|---|---|---|
| 1 | Verified mission | ✅ Admit | What does a green-light mission look like? |
| 2 | No passport | ❌ Block | Which agent is this — and who owns it? |
| 3 | Revoked passport | ❌ Block | How do I kill a key after it leaks? |
| 4 | Child scope escalation | ❌ Block | What authority can a child claim? |
| 5 | Budget exceeded | ⏸️ Checkpoint | How much has it spent on what? |
| 6 | High-risk action | ⏸️ Checkpoint | What needs a human signature? |
| 7 | Stuck browser | ⏸️ Checkpoint | How do I stop a wedged agent? |
| 8 | Replay blocked | ❌ Block | Can a captured request be reused? |
| 9 | Verify offline | 🔐 Verify | Can I prove this tomorrow without your servers? |
Every click runs against a real FastAPI service, real Ed25519 keys, the real 12-state mission engine. The receipts are downloadable and offline-verifiable.
Prerequisites: Node.js ≥ 18.
git clone https://github.com/Mas-AI-Official/kYA_website.git
cd kYA_website
npm install
npm run devOpen http://localhost:3000.
The waitlist form on #join-beta works locally without any env vars — submissions are written to console.log (and to the browser’s localStorage as a defensive backup).
┌──────────────────────────────────────────────────────────────────────┐
│ BROWSER (visitor) │
│ dark slate · gold · teal · framer-motion scroll FX │
└────────────────────────────────┬─────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ Next.js 14 (App Router · static + Edge) │
│ ─────────────────────────────────────────────────────────────────── │
│ / ......... statically prerendered (SEO-friendly, LCP < 1.5s) │
│ /api/waitlist .. Edge runtime function (V8 isolate, ~5ms cold) │
└────────────────────────────────┬─────────────────────────────────────┘
│
┌────────────────────────┼────────────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────────┐
│ RESEND │ │ SLACK │ │ WEBHOOK (any) │
│ HTML email │ │ Channel ping │ │ Zapier / Notion │
│ (optional) │ │ (optional) │ │ (optional) │
└──────────────┘ └──────────────┘ └──────────────────┘
│
▼
┌────────────────────┐
│ stdout JSON log │
│ (always) │
└────────────────────┘
Vercel / Cloudflare Logs surface these
/api/waitlist validates → checks honeypot → checks rate-limit (1/IP/min, after validation so a typo doesn’t lock you out) → fans out to all configured providers via Promise.all. Every provider is optional. The form succeeds with zero configuration.
| Token | Value | Used for |
|---|---|---|
| Background | #05080B ink + layered radial gradients |
Page base |
| Slate 900 | #0F1419 |
Panel surfaces |
| Slate 800 | #1A2129 |
Raised cards |
| Gold | #D4A843 |
Primary CTA, brand mark, "admit" signals |
| Teal | #2DD4BF |
Secondary accents, "verify" signals |
| Signal green | #34D399 |
Policy PASS, success |
| Signal amber | #FBBF24 |
Checkpoint pending, warning |
| Signal red | #F87171 |
Block, deny |
| Signal blue | #60A5FA |
Human-loop signal |
| Display | Inter | Headings, dashboard text |
| Mono | JetBrains Mono | Code, IDs, addresses |
Animation language: parallax glow orbs that drift with scroll · drifting grid · descending scanline · staggered card reveals · animated trust-meter SVG · audit-trail line-by-line. All motion respects prefers-reduced-motion.
.
├── public/
│ ├── kya-logo.png # Brand mark (gold-on-black)
│ └── favicon.svg
├── src/
│ ├── app/
│ │ ├── api/
│ │ │ └── waitlist/
│ │ │ └── route.ts # Edge function: validation + fan-out
│ │ ├── globals.css # Tailwind + glow / grid / scanline
│ │ ├── layout.tsx # Root layout, metadata, OG
│ │ └── page.tsx # Composed landing page
│ ├── components/
│ │ ├── AnimatedBackground.tsx # Scroll-reactive orbs + grid
│ │ ├── MissionDashboard.tsx # Hero dashboard simulation
│ │ ├── Nav.tsx # Sticky nav with KYA mark
│ │ ├── Footer.tsx
│ │ └── sections/
│ │ ├── Hero.tsx
│ │ ├── Problem.tsx
│ │ ├── Product.tsx
│ │ ├── HowItWorks.tsx
│ │ ├── Architecture.tsx
│ │ ├── LiveLab.tsx # 9 deep-linked scenario cards
│ │ ├── UseCases.tsx
│ │ ├── WhyNow.tsx
│ │ ├── Comparison.tsx
│ │ ├── Founder.tsx
│ │ └── CTA.tsx
│ └── lib/
│ └── cn.ts
├── .env.example # All optional providers documented
├── next.config.mjs
├── package.json
├── tailwind.config.ts # MAS-AI palette + animations
├── tsconfig.json
├── vercel.json # Security headers + Edge cache
└── wrangler.toml # Cloudflare Pages config
Same provider as your DNS, free tier covers anything this site will see, and the Edge /api/waitlist runs as a Cloudflare Worker bundle for free.
npx wrangler login # one-time, opens browser
npm run cf:deploy # builds via @cloudflare/next-on-pages and uploadsAfter the first deploy:
-
Cloudflare Dashboard → Pages →
kya-mission-control→ Custom Domains — enterkya.mas-ai.co. The CNAME is already set on themas-ai.cozone, so Cloudflare validates and issues the TLS cert in ~30 s. -
Settings → Environment Variables — paste any of:
Var Effect RESEND_API_KEY+WAITLIST_NOTIFY_TOBranded HTML email per signup WAITLIST_FROMOverride From:(default uses Resend onboarding)SLACK_WEBHOOK_URLInstant Slack channel ping WAITLIST_WEBHOOK_URLForward raw JSON to Zapier / n8n / Notion See
.env.example.
Containerized Next.js (standalone output) on a serverless region in Toronto. Same region as Daena, scale-to-zero, ~150 MB image, sub-second cold starts.
# One-time:
gcloud auth login
gcloud config set project mas-ai-kya
# Build + push + deploy + smoke-test (one shot):
npm run gcp:deployThe script:
- Enables
run.googleapis.com+artifactregistry.googleapis.com(no-op if already on) - Creates the Artifact Registry repo
kya-websiteinnorthamerica-northeast1(idempotent) - Builds the multi-stage
Dockerfileand tags with<version>-<git-sha>+latest - Pushes both tags
- Deploys to Cloud Run service
kya-website(cpu=1, memory=512Mi, concurrency=80, scale-to-zero) - Curls the live URL + the honeypot path on
/api/waitlistto confirm it works
No local Docker? Use Cloud Build instead — same result, runs entirely on Google's side:
npm run gcp:deploy:remoteAfter deploy, attach the custom domain in Cloud Run → kya-website → Custom Domains (this also issues a managed cert), or update your Cloudflare CNAME from kya-mission-control.pages.dev to ghs.googlehosted.com (Cloud Run's domain-mapping target).
Or via CLI:
npx vercel login
npx vercel --prodAfter deploy: Project Settings → Domains → add kya.mas-ai.co → add the DNS record Vercel shows (or keep the existing CNAME; both work).
npm run build && npm run startOutputs /.next (server) — wire to any Node host, or next export if you don’t need the API route.
POST /api/waitlist
{
"name": "Jane Doe", // required
"email": "jane@acme.com", // required, RFC-ish regex
"company": "ACME Agents", // optional
"use_case": "Procurement bot needs receipts", // optional, ≤ 4000 chars
"website": "" // honeypot — must be empty
}Responses:
| Status | Meaning |
|---|---|
200 {ok:true, delivered:{resend, slack, webhook}} |
Accepted; per-provider booleans show what fired |
200 {ok:true} |
Honeypot tripped (silent — no slot consumed) |
400 {error:"missing_fields"} |
name or email blank |
400 {error:"invalid_email"} |
email failed regex |
400 {error:"invalid_json"} |
body not valid JSON |
429 {error:"rate_limited", retry_after_s} |
> 1 request from this IP this minute |
405 {error:"method_not_allowed"} |
not a POST |
Validation runs before rate-limiting so a typo doesn’t burn your slot. Honeypot bots are silently 200’d so they don’t retry.
| Metric | Target | Measured |
|---|---|---|
| First Load JS | < 200 kB | 154 kB |
| LCP | < 1.5 s | (depends on host) |
| Lighthouse | > 95 | (run yours) |
| Third-party trackers | 0 | 0 |
| External font requests | 0 | 0 (system stack) |
This is the marketing site. The product itself lives at Mas-AI-Official/KYA_Mission_Control (Apache 2.0, mission state machine + receipt spec + lab demo).
If you spot a copy bug, a typo, or a layout issue here, open an issue or a PR — anything that makes the site sharper is welcome. For product feedback (the protocol, the receipt format, the lab scenarios), open issues on the product repo.
Apache 2.0 — see LICENSE.
© 2026 MAS-AI Technologies Inc. · Toronto, Ontario, Canada
Built by Masoud Masoori · MAS-AI Technologies Inc.
mas-ai.co · hello@mas-ai.co · security@mas-ai.co
Two patents pending: Sunflower-Honeycomb Memory Architecture · Neural-Backed Memory Fabric (NBMF)