{section.title}
{section.content}
import { createFileRoute } from '@tanstack/react-router'; const sections = [ { icon: '🤖', title: 'What is an agent?', content: 'Agents are AI-powered services that expose entrypoints—callable operations that perform specific tasks. Each agent publishes a manifest describing capabilities, pricing, and available inputs/outputs.', }, { icon: '🔌', title: 'Entrypoints', content: 'Every entrypoint accepts JSON input and returns structured output. Some entrypoints support streaming for real-time updates using Server-Sent Events (SSE).', }, { icon: '💳', title: 'Payments & wallets', content: 'Agents can require blockchain-backed micropayments. Connect a local test wallet or a WalletConnect-compatible wallet via AppKit to invoke protected entrypoints using the x402 protocol.', }, { icon: '🌐', title: 'Network support', content: 'Agents operate across multiple chains (Base, Base Sepolia, Optimism, and more). The dashboard surfaces the required network and pricing details for each entrypoint.', }, ]; const walletGuide = [ { type: 'WalletConnect via AppKit', description: 'Connect MetaMask, Rainbow, or any WalletConnect-compatible wallet once WALLET_CONNECT_PROJECT_ID is configured.', steps: [ 'Set WALLET_CONNECT_PROJECT_ID in your .env', "Click 'Connect Wallet' and select your provider", 'Approve the connection in your wallet', 'Switch to the prompted network before invoking paid entrypoints', ], }, ]; const devWorkflow = [ { title: 'Bootstrap', code: 'bun install', description: 'Install dependencies across the monorepo.', }, { title: 'Develop', code: 'bun run dev', description: 'Start TanStack Start with HMR and SSR on port 3000.', }, { title: 'Inspect entrypoints', code: 'curl http://localhost:3000/api/agent/entrypoints', description: 'List available entrypoints served directly from the agent core.', }, { title: 'Build for production', code: 'bun run build', description: 'Generate an optimized output ready for deployment.', }, ]; const integrationExample = `// Using x402-fetch to invoke an entrypoint import { createSigner, wrapFetchWithPayment } from "x402-fetch"; const signer = await createSigner("ethereum", process.env.PRIVATE_KEY!); const fetchWithPayment = wrapFetchWithPayment(fetch, signer); const response = await fetchWithPayment( "https://localhost:3000/api/agent/entrypoints/echo/invoke", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ input: { text: "Hello, agent!" } }), } ); const result = await response.json(); console.log(result); `; export const Route = createFileRoute('/about')({ component: AboutPage, }); function AboutPage() { return (
This dashboard replaces the legacy Vite landing page with a unified TanStack Start application. Agents run in-process, server routes expose entrypoints, and shared TypeScript types keep invoke and streaming logic perfectly in sync.
{section.content}
{guide.description}
{step.description}
DEV.md{' '}
for environment variables, deployment notes, and end-to-end payment
walkthroughs.
Use{' '}
x402-fetch
{' '}
to wrap fetch calls with automatic payment handling. When the agent
requests payment, the wrapper signs and forwards proof headers
transparently.
{integrationExample}