Control plane for Motus multi-agent operations.
- Next.js + TypeScript
- Convex (database/runtime)
- Human.tech auth boundary
- Wallet/account abstraction permissions model
npm install
npm run devChat API routes call Convex from the Next.js server using a shared secret so Convex is never exposed to the client.
CONVEX_SERVER_SECRET(required for chat): Set the same value in your Convex deployment and in.env.local:- Generate a secret once:
openssl rand -base64 32 - Convex: Dashboard → your deployment → Settings → Environment Variables, or
npx convex env set CONVEX_SERVER_SECRET "<your-secret>" - Next.js: add
CONVEX_SERVER_SECRET=<same-secret>to.env.local
- Generate a secret once:
- Default organization is created automatically the first time a chat is created (no manual bootstrap step).
verifyHumanTechSession() in src/lib/humantech.ts can verify a wallet address via Human Passport (Stamps API v2). To enable it:
PASSPORT_API_KEY– API key from developer.passport.xyz (API Keys section).PASSPORT_SCORER_ID– Scorer ID from the same portal (Scorers section).PASSPORT_SCORE_THRESHOLD(optional) – Minimum score to consider verified; default20.
Pass the wallet address (e.g. from your session) to verifyHumanTechSession(address); it returns a HumanTechIdentity if the address has a passing score, or null otherwise. If these env vars are not set, the function returns null (no verification).
- Modular architecture scaffold
- Convex schema for orgs/users/roles/tasks/chats/agents/wallets/audit
- RBAC starter
- Human.tech adapter boundary
- Vertical slice demo route (
/dashboard) - Docs, ADR starter, PR checklist