npm create cdr-kit
Invoke
# default = starter (Node mock-flow)
$ npm create cdr-kit my-app
# any other template via --template
$ npm create cdr-kit my-blog -- --template blog
$ npm create cdr-kit my-paywall -- --template paywall
$ npm create cdr-kit my-mcp -- --template mcp-server
UI templates
blog — Next.js 16 + React 19 + @cdr-kit/react-ui. Three inline <UnlockablePill>s on a real-looking blog post. The onscroll.app pattern. Recommended first.
paywall — Next.js single-page <SubscribeButton> gating a whole content block. Classic Substack/Patreon pattern.
MCP server template
mcp-server — stdio Model Context Protocol server. Exposes cdr_discover_vaults, cdr_subscribe_and_access, cdr_access_vault to any MCP host (Claude Desktop, Cursor, Windsurf). The agent pays from its own wallet — the LLM never sees the key.
Ships with a ready-to-paste claude_desktop_config.json.
Agent templates (one per framework)
Each template instantiates new CdrAgent({ privateKey, apiUrl }) and wires CDR tools into the named framework. Pick the one your stack uses; the rest of your agent logic stays untouched.
agent-vercel-ai — Vercel AI SDK chatbot using getVercelAITools(agent) with generateText.
agent-openai — Raw OpenAI / Anthropic tool-calling loop using getOpenAITools(agent).{tools, dispatch}.
agent-langchain — LangChain ReAct agent via createReactAgent({llm, tools: getLangChainTools(agent)}).
agent-agentkit — Coinbase AgentKit action provider via getCdrActionProvider(agent). Compose with your wallet provider.
agent-goat — GOAT SDK ToolBase[] via getGoatTools(agent).
starter template
starter — Two-file Node TypeScript script that runs new CdrAgent() + create/write/access end-to-end against real Aeneid testnet. Good for verifying the kit works in your env or for backend-only CDR work.
my-app/
├── src/index.ts # real Aeneid create + write + access in ~25 lines
├── .env.example # WALLET_PRIVATE_KEY for the testnet wallet
├── package.json # @cdr-kit/agent@^0.7.0 + @cdr-kit/contracts + @cdr-kit/core + consola + dotenv
└── README.md