Zero-Touch Deployment Platform for OKX.AI Agent Service Providers (ASPs)
Describe your idea in plain English. SHIPIT handles the AI generation, validation, on-chain registration, and marketplace activation β all in one click.
Becoming an Agent Service Provider (ASP) on OKX.AI is incredibly powerful, allowing you to monetize skills and APIs in the new Agent Economy. However, the manual onboarding process involves installing Onchain OS, navigating strict validation rules, logging into Agentic Wallets via CLI, and manually formatting A2MCP or A2A service payloads.
SHIPIT eliminates this friction entirely.
SHIPIT is the fastest way to create, configure, and deploy AI-powered ASPs to the OKX.AI ecosystem.
Input:
"Build an AI agent that writes SEO blogs for crypto startups. Charge 0.05 USDT per call."
Output (auto-generated & deployed):
- π¨ Brand Identity: Name & Deterministic Avatar (OKX CDN compatible)
- π Marketplace Profile: 2-part OKX description format
- π° Monetization: Pay-per-call pricing mapped to A2MCP specs
- π·οΈ Discoverability: Categories, keywords, and routing metadata
- π Endpoint Config: Ready-to-use A2MCP endpoint structure
- π Live Deployment: Instantly registered on-chain via Onchain OS
- π’ Go-to-Market Kit: X post, demo script, product pitch
| Feature | OKX.AI Integration | Description |
|---|---|---|
| π€ AI-Powered Payload Generation | Meets OKX.AI Schema | Gemini 1.5 Flash generates names, descriptions, and A2MCP service metadata formatted exactly to OKX specs. |
| π¨ Zero-Disk Avatar Upload | OKX CDN (static.okx.com) |
Generates a deterministic DiceBear avatar, downloads it in-memory, and uses the onchainos agent upload CLI to meet OKX's strict --picture URL rules. |
| π A2MCP Automation | Agent-to-MCP Services | Automatically configures the ASP as an A2MCP service with fixed pay-per-call pricing and compliant endpoint structures. |
| π‘οΈ Smart Fixβ’ Auto-Validation | OKX Validation Rules | Intercepts onchainos CLI validation errors (e.g., name too long, description format) and auto-repairs them via AI before retrying. |
| π Onchain OS Orchestration | onchainos CLI |
Wraps the official Rust binary. Executes upload β create β activate seamlessly in the background. |
| βοΈ Serverless CLI Execution | Vercel Serverless Ready | Custom Node.js wrappers copy the onchainos binary to /tmp, set ONCHAINOS_HOME, and execute via proxy β making Rust CLI deployments work flawlessly on Vercel. |
| π Real-time Deployment Stream | Server-Sent Events (SSE) | Beautiful UI tracking every step of the OKX registration process live. |
Frontend Next.js 15 (App Router) + React 19 + TypeScript
Styling Tailwind CSS v4 + CSS variables (dark/light mode)
UI Components @base-ui/react (headless primitives)
State Zustand (persisted to localStorage)
Animations Framer Motion
Forms React Hook Form + Zod validation
Notifications Sonner (toast system)
AI Engine Gemini 1.5 Flash (primary) β Groq Llama3 (fallback)
CLI Integration onchainos (OKX Onchain OS) with proxy support
shipit/
βββ app/ # Next.js App Router
β βββ layout.tsx # Root layout (theme, sonner, favicon)
β βββ page.tsx # Landing page
β βββ globals.css # Tailwind v4 + design tokens
β βββ loading.tsx # Loading skeleton
β βββ (dashboard)/ # Dashboard pages (authenticated layout)
β β βββ layout.tsx # Sidebar + navigation
β β βββ new/page.tsx # Step 1: Enter idea
β β βββ review/page.tsx # Step 2: Review generated ASP
β β βββ deploy/page.tsx # Step 3: Deploy stream
β β βββ success/page.tsx # Step 4: Success + confetti
β β βββ history/page.tsx # ASP deployment history
β β βββ settings/page.tsx # Plan, credentials, appearance
β βββ api/
β βββ generate/route.ts # POST SSE β AI generation pipeline
β βββ deploy/route.ts # POST SSE β OKX CLI deployment pipeline
β
βββ components/
β βββ ui/ # Base UI component library (33 primitives)
β βββ landing/ # Hero, Features, HowItWorks, Pricing
β βββ dashboard/ # AppList, AppShowcaseCard
β βββ deployment/ # DeploymentScore (SSE step tracker)
β βββ generator/ # PromptInput
β βββ review/ # IdentityCard, ServiceList
β βββ settings/ # ProviderSettings (OKX + Gemini keys)
β βββ viewers/ # ReadmeViewer, PayloadViewer, XPostViewer, DemoSciptViewer
β βββ theme-provider.tsx # next-themes wrapper
β
βββ lib/
β βββ generator/ # AI generators (brand, description, pricing, metadata, docs, marketing, config, avatar)
β βββ validator/ # Zod schemas (name, description, fee, endpoint)
β βββ okx/ # CLI wrappers (upload, create, activate)
β βββ utils.ts # cn(), formatDate(), slugify(), etc.
β
βββ stores/
β βββ shipit.store.ts # Zustand store (pipeline state, plan tier, history)
βββ hooks/
β βββ use-generation.ts # SSE consumer for generation pipeline
β βββ use-deployment.ts # SSE consumer for deployment pipeline
βββ types/ # TypeScript type definitions
βββ constants/ # Limits, validation rules, pricing tiers
βββ public/ # Static assets (favicon, robots.txt)
βββ prompts/ # System prompt templates
User Input (idea)
β
βΌ
βββββββββββββββββββββββ
β POST /api/generate β βββ SSE Streaming
β Gemini 2.5 Flash β
β β’ generateBrandName β
β β’ generateDescriptionβ
β β’ generatePricing β
β β’ generateMetadata β
β β’ generateDocs β
β β’ generateMarketing β
β β’ generateAvatar β
βββββββββββ¬ββββββββββββ
β done event
βΌ
βββββββββββββββββββββββ
β Review Page β Identity Card + Service List
βββββββββββ¬ββββββββββββ
β Deploy clicked
βΌ
βββββββββββββββββββββββ
β POST /api/deploy β βββ SSE Streaming
β onchainos CLI β
β β’ upload avatar β
β β’ create identity β β Smart Fixβ’ wraps this
β β’ activate agent β
βββββββββββ¬ββββββββββββ
β done event
βΌ
βββββββββββββββββββββββ
β Success Page β Confetti + ASP card + marketing kit
βββββββββββββββββββββββ
RootLayout
βββ ThemeProvider (next-themes)
βββ Toaster (sonner)
βββ Pages
βββ LandingPage
β βββ Nav
β βββ Hero
β βββ Features (4 cards)
β βββ HowItWorks (3 steps)
β βββ Pricing (3 tiers: Free/Pro/Team)
β βββ Footer
β
βββ DashboardLayout
βββ Sidebar
β βββ SidebarHeader (SHIPIT logo)
β βββ SidebarContent (nav menu)
β βββ SidebarFooter (collapse trigger)
β
βββ Pages
βββ /new β PromptInput + DeploymentScore (live)
βββ /review β IdentityCard + ServiceList
βββ /deploy β DeploymentScore (SSE stream)
βββ /success β AppShowcaseCard + confetti
βββ /history β AppList (ASP grid)
βββ /settings β ProviderSettings + PlanSelector + ThemeToggle
- Node.js 18+
- OKX.AI Developer Account (For API Keys)
# 1. Clone the repository
git clone https://github.com/Aaditya1273/ZK-Pay.git shipit
cd shipit
# 2. Install dependencies
npm install
# 3. Set up environment
cp .env.example .env.local
# Add GEMINI_API_KEY, OKX_API_KEY, OKX_SECRET_KEY, OKX_PASSPHRASE
# 4. Start the dev server
npm run dev
# Open http://localhost:3000Note on OKX CLI: SHIPIT bundles the
onchainosbinary in thebin/directory and manages its execution automatically. You do not need to installonchainos-skillsglobally to run this app.
- Open
http://localhost:3000(or your Vercel deployment URL). - Click "Start Deploying" to enter the dashboard.
- Describe your ASP: "A data oracle agent that provides real-time token sentiment analysis for 0.1 USDT per call."
- Watch the AI instantly generate your OKX-compliant A2MCP payload.
- Review the details, then click "Deploy Now".
- SHIPIT executes the
onchainosregistration on-chain. - Success! Your agent is now in the "Pending OKX Review" queue, and you receive an instant Terminal Verification command to prove its on-chain existence.
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Production build |
npm run start |
Start production server |
npm run lint |
Run ESLint |
npm run typecheck |
Run TypeScript type checking |
The generate endpoint accepts a plain-text idea and returns SSE events:
// Event flow:
event: step β { id: "1", label: "Generating Brand Name", status: "loading" }
event: step β { id: "1", label: "Name: BlogWise", status: "success" }
event: step β { id: "2", label: "Generating Service Description", ... }
event: step β { id: "3", label: "Analyzing Pricing & Metadata", ... }
event: step β { id: "4", label: "Generating Identity Avatar", ... }
event: done β { name, description, fee, avatarUrl, categories, ... }All 8 generators run in parallel where possible:
generateBrandNameβ validates name (3-25 chars, no celebrities)generateDescriptionβ validates (2-part format, max 400 chars)generatePricingβ returns fee + subscription plans + usage tiers + premium upgradesgenerateMetadataβ returns categories, keywords, capabilities, routinggenerateDocsβ returns install guide, usage examples, API docs, FAQgenerateMarketingβ returns product pitch, launch announcementgenerateConfigβ returns manifest.json, skill.json, MCP config, .envgenerateAvatarβ downloads from DiceBear, saves to temp path for CLI upload
// Event flow:
event: step β { id: "5", label: "Uploading avatar to OKX CDN", status: "loading" }
event: step β { id: "5", label: "Avatar uploaded", status: "success" }
event: step β { id: "6", label: "Registering Identity On-Chain", ... }
// (If validation fails β Smart Fixβ’ repairs via Gemini β retry)
event: step β { id: "6", label: "Activated Agent #12345", status: "success" }
event: done β { agentId, name, description, fee, avatarUrl }When the create command fails with a validation error (description, name, fee, or service related), Smart Fixβ’:
- Intercepts the error
- Sends it to Gemini 2.5 Flash with the current payload
- Gets a fixed description
- Retries the
createcommand (up to 3 attempts)
If the error is auth/network related, it rethrows immediately without attempting a fix.
All CLI wrappers are in lib/okx/ and shell to the real onchainos binary:
| Function | CLI Command | Purpose |
|---|---|---|
runUpload |
onchainos agent upload --file --chain |
Upload avatar to OKX CDN |
runCreate |
onchainos agent create --role asp --name --description --picture --service --chain |
Register identity on-chain |
runActivate |
onchainos agent activate --agent-id --chain --preferred-language |
Activate the agent |
Credentials are set via environment variables: OKX_API_KEY, OKX_SECRET_KEY, OKX_PASSPHRASE.
| Tier | Price | Deployments | Features |
|---|---|---|---|
| Free | $0/mo | 3 deployments | All AI generation, dashboard, community support |
| Pro | $19/mo | Unlimited | Smart Fixβ’, priority support, marketing kit download, custom API keys |
| Team | $49/mo | Unlimited | Shared workspace, collaboration, analytics, dedicated support |
Deployment limits are enforced client-side with an upgrade toast when exceeded.
The Settings page (/settings) provides a UI to configure:
- OKX.AI Credentials: API Key, Secret Key, Passphrase (for
onchainosCLI) - Smart Fixβ’ AI: Gemini API Key (optional β for auto-repair during deployment)
- Plan Selection: Switch between Free/Pro/Team tiers
- Appearance: Dark/Light mode toggle
All credentials are stored locally in localStorage and sent to the deploy API at request time.
| Variable | Required | Description |
|---|---|---|
GEMINI_API_KEY |
Yes | Google Gemini 2.5 Flash API key (for AI generation) |
OKX_API_KEY |
For deploy | OKX API key (or set via Settings page) |
OKX_SECRET_KEY |
For deploy | OKX secret key (or set via Settings page) |
OKX_PASSPHRASE |
For deploy | OKX passphrase (or set via Settings page) |
NEXT_PUBLIC_GOOGLE_CLIENT_ID |
Yes | Google OAuth client ID (for user sign-in) |
GOOGLE_CLIENT_SECRET |
Yes | Google OAuth client secret |
NEXTAUTH_SECRET |
Yes | Random string for JWT encryption (openssl rand -base64 32) |
NEXTAUTH_URL |
Yes | Your production URL (e.g., https://shipit.example.com) |
DATABASE_URL |
For auth | PostgreSQL connection string (Supabase/Neon) |
Build and run the Docker image:
# Build
docker build -t shipit .
# Run with your env vars
docker run -p 3000:3000 \
-e GEMINI_API_KEY=your_key \
-e NEXT_PUBLIC_GOOGLE_CLIENT_ID=your_id \
-e GOOGLE_CLIENT_SECRET=your_secret \
-e NEXTAUTH_SECRET=your_secret \
-e NEXTAUTH_URL=https://your-domain.com \
-e DATABASE_URL=your_db_url \
shipitImportant: Database migrations must be run separately:
# Push schema changes to your database
docker run --rm shipit npx prisma db push
β οΈ The in-memory rate limiter won't work across multiple serverless instances. For auto-scaling deployments, replacelib/rate-limit.tswith a Redis-backed solution.
- Connect your GitHub repository to Vercel
- Set all environment variables in the Vercel dashboard
- Run
npx prisma generateandnpx prisma db pushas build commands - Set
NEXTAUTH_URLto your Vercel deployment URL
# 1. Install dependencies
npm ci
# 2. Generate Prisma client
npx prisma generate
# 3. Push database schema
npx prisma db push
# 4. Build
npm run build
# 5. Start
npm startGitHub Actions CI is configured in .github/workflows/ci.yml:
- On push/PR to
main: Runs typecheck β lint β build - Prisma client is auto-generated in CI
- Deployment to your hosting platform can be added as a final step
- Create
lib/generator/your-feature.tswith a function that callsgenAI.getGenerativeModel - Add the output type to
GeneratedPayloadinstores/shipit.store.ts - Import and call it in
app/api/generate/route.ts - Add a validation schema in
lib/validator/ - Add a viewer component in
components/viewers/
- Create
app/(dashboard)/your-page/page.tsx(client component) - Add a nav link in
app/(dashboard)/layout.tsx - Use the Zustand store for shared state
The project uses @base-ui/react for headless UI primitives. Components are wrapped in components/ui/ following the shadcn/ui pattern. To use a component:
import { Button } from "@/components/ui/button"
import { Card, CardContent } from "@/components/ui/card"MIT License β see LICENSE for details.
- Developers shipping AI agents on OKX.AI
- Indie hackers monetizing expertise
- Teams deploying at scale
- Anyone with an idea who wants to become an AI service provider
Build Less. Ship Faster. Monetize Sooner.