repositories
loading repo index
repositories
loading repo index
repository
loading code, commits, and activity
public Clawd ADK gateway launch mirror
stars
latest
clone command
git clone gitlawb://did:key:z6Mkq5mY...iFZ5/my-project-publ...git clone gitlawb://did:key:z6Mkq5mY.../my-project-publ...2fa351d6docs: add automaton and perps launch sources15d ago| #1 | # 🚀 Solana Clawd Agent Deployment Guide |
| #2 | |
| #3 | There are **four paths** to getting your agent live on the [Solana Clawd hub](https://x402.wtf/agents). Pick the one that matches how much control you want. |
| #4 | |
| #5 | | Path | Best for | Result | |
| #6 | | ---------------------------- | ----------------------------------------- | -------------------------------------------------- | |
| #7 | | **1. PR into the repo** | Simple, static agent prompts | Auto-hosted on CDN + hub + 18 locales | |
| #8 | | **2. Self-host + A2A** | Custom logic, private tools, streaming | Your infra, discoverable via hub | |
| #9 | | **3. Mint as MPL Core** | On-chain identity, transferable ownership | Registered on Solana, listed at `/agents-registry` | |
| #10 | | **4. MCP server only** | Tool provider for Clawd Desktop / Cursor | Endpoint listed in MCP catalog | |
| #11 | |
| #12 | --- |
| #13 | |
| #14 | ## Path 1 — Open a PR (easiest) |
| #15 | |
| #16 | Push your `agent.json` into the repo and everything else is automatic. |
| #17 | |
| #18 | ### Steps |
| #19 | |
| #20 | ```bash |
| #21 | git clone https://github.com/clawdsolana/OpenClawd.git |
| #22 | cd openclawd/defi-agents |
| #23 | cp agent-template.json src/your-agent-name.json |
| #24 | # edit src/your-agent-name.json |
| #25 | bun install |
| #26 | bun run format |
| #27 | bun run build |
| #28 | git checkout -b add-your-agent |
| #29 | git commit -am "feat(agents): add your-agent-name" |
| #30 | git push origin add-your-agent |
| #31 | # open PR at github.com/clawdsolana/OpenClawd |
| #32 | ``` |
| #33 | |
| #34 | ### What CI does on merge |
| #35 | |
| #36 | 1. Validates JSON schema |
| #37 | 2. Translates `config.systemRole`, `meta.title`, `meta.description` into 18 languages via OpenRouter |
| #38 | 3. Builds the aggregated index (`index.json`, `index.{locale}.json`, `agents-manifest.json`) |
| #39 | 4. Deploys to both: |
| #40 | - **GitHub Pages** at `https://clawd.click/{your-agent-name}.json` |
| #41 | - **Solana Clawd hub** at `https://x402.wtf/agents/{your-agent-name}` |
| #42 | |
| #43 | ### Required secret for translation |
| #44 | |
| #45 | Set once at **Settings → Secrets → Actions**: |
| #46 | |
| #47 | | Name | Value | |
| #48 | | -------------------- | ------------------- | |
| #49 | | `OPENROUTER_API_KEY` | Your OpenRouter key | |
| #50 | |
| #51 | If absent, CI skips translation and only ships English. |
| #52 | |
| #53 | --- |
| #54 | |
| #55 | ## Path 2 — Self-host + A2A register |
| #56 | |
| #57 | Run your agent on your own infra (Vercel, Fly, Railway, Modal, Cloudflare Workers, your laptop) and expose the A2A endpoint. The hub proxies queries to you. |
| #58 | |
| #59 | ### Minimal A2A server (Node) |
| #60 | |
| #61 | ```ts |
| #62 | import express from "express"; |
| #63 | |
| #64 | const app = express(); |
| #65 | app.use(express.json()); |
| #66 | |
| #67 | app.post("/a2a", async (req, res) => { |
| #68 | const { method, params } = req.body; |
| #69 | if (method === "message/send") { |
| #70 | // call your LLM with params.message.content |
| #71 | const reply = await yourAgentLogic(params.message.content); |
| #72 | res.json({ jsonrpc: "2.0", id: req.body.id, result: { role: "assistant", content: reply } }); |
| #73 | return; |
| #74 | } |
| #75 | res.status(400).json({ error: "unknown method" }); |
| #76 | }); |
| #77 | |
| #78 | app.get("/agent.json", (_, res) => res.json({ |
| #79 | identifier: "your-agent-name", |
| #80 | author: "your-handle", |
| #81 | meta: { |
| #82 | title: "Your Agent", |
| #83 | description: "What it does", |
| #84 | avatar: "🤖", |
| #85 | tags: ["solana", "..."], |
| #86 | category: "defi", |
| #87 | }, |
| #88 | config: { systemRole: "..." }, |
| #89 | schemaVersion: 1, |
| #90 | a2a: "https://your-host.example.com/a2a", |
| #91 | })); |
| #92 | |
| #93 | app.listen(3000); |
| #94 | ``` |
| #95 | |
| #96 | ### Register with the hub |
| #97 | |
| #98 | ```bash |
| #99 | curl -X POST https://x402.wtf/api/agents/register \ |
| #100 | -H "Content-Type: application/json" \ |
| #101 | -d '{ |
| #102 | "identifier": "your-agent-name", |
| #103 | "manifestUrl": "https://your-host.example.com/agent.json", |
| #104 | "a2a": "https://your-host.example.com/a2a" |
| #105 | }' |
| #106 | ``` |
| #107 | |
| #108 | The registry polls your `manifestUrl` every 24h to pick up prompt/metadata changes. |
| #109 | |
| #110 | --- |
| #111 | |
| #112 | ## Path 3 — Mint as on-chain MPL Core asset |
| #113 | |
| #114 | For agents that should have **transferable ownership**, **royalty rails**, or a **permanent on-chain record**, mint it as a Metaplex Core asset on Solana mainnet. |
| #115 | |
| #116 | ### UI flow (recommended) |
| #117 | |
| #118 | 1. Go to [x402.wtf/agents-mint](https://x402.wtf/agents-mint) |
| #119 | 2. Connect your Solana wallet (Phantom, Solflare, Backpack) |
| #120 | 3. Either: |
| #121 | - **Upload `agent.json`** — we handle IPFS pinning and metadata |
| #122 | - **Paste a manifest URL** if you're already hosting it |
| #123 | 4. Confirm the mint transaction (~0.003 SOL + priority fee) |
| #124 | 5. Your agent appears in [/agents-registry](https://x402.wtf/agents-registry) with its on-chain asset address |
| #125 | |
| #126 | ### Programmatic mint (server-side) |
| #127 | |
| #128 | ```ts |
| #129 | import { createUmi } from "@metaplex-foundation/umi-bundle-defaults"; |
| #130 | import { mplCore, create } from "@metaplex-foundation/mpl-core"; |
| #131 | import { generateSigner, publicKey } from "@metaplex-foundation/umi"; |
| #132 | |
| #133 | const umi = createUmi(process.env.RPC_URL!).use(mplCore()); |
| #134 | const asset = generateSigner(umi); |
| #135 | |
| #136 | await create(umi, { |
| #137 | asset, |
| #138 | name: "Solana Portfolio Manager", |
| #139 | uri: "https://x402.wtf/api/agents/nft-metadata.json?identifier=solana-portfolio-manager", |
| #140 | collection: publicKey(process.env.AGENT_COLLECTION!), |
| #141 | }).sendAndConfirm(umi); |
| #142 | |
| #143 | console.log("Agent asset:", asset.publicKey); |
| #144 | ``` |
| #145 | |
| #146 | The MPL Core asset address becomes your agent's canonical Solana identity. Transfer it, sell it, or delegate update authority — the hub reads the asset on every registry refresh. |
| #147 | |
| #148 | --- |
| #149 | |
| #150 | ## Path 4 — MCP server only |
| #151 | |
| #152 | If you only want to expose **tools** (not a full prompt-driven agent), run an MCP Streamable HTTP server and register it. |
| #153 | |
| #154 | ### Register your MCP endpoint |
| #155 | |
| #156 | ```bash |
| #157 | curl -X POST https://modelcontextprotocol.name/register \ |
| #158 | -H "Content-Type: application/json" \ |
| #159 | -d '{ |
| #160 | "name": "your-tool-server", |
| #161 | "url": "https://your-host.example.com/mcp", |
| #162 | "tags": ["solana", "..."] |
| #163 | }' |
| #164 | ``` |
| #165 | |
| #166 | Your server shows up in both the [MCP catalog](https://modelcontextprotocol.name) and the Solana Clawd [agents registry](https://x402.wtf/agents-registry) under "Tool Providers". |
| #167 | |
| #168 | --- |
| #169 | |
| #170 | ## Custom Domains for Self-Hosted Agents |
| #171 | |
| #172 | If you're hosting your own agent manifest, map a clean subdomain: |
| #173 | |
| #174 | ```bash |
| #175 | # Example CNAME record |
| #176 | agent.yourdomain.com CNAME your-host.example.com |
| #177 | ``` |
| #178 | |
| #179 | Then set: |
| #180 | |
| #181 | ```bash |
| #182 | echo "agent.yourdomain.com" > CNAME |
| #183 | git add CNAME && git commit -m "Custom domain" && git push |
| #184 | ``` |
| #185 | |
| #186 | Enable HTTPS in your hosting provider after DNS propagates. |
| #187 | |
| #188 | --- |
| #189 | |
| #190 | ## Path Comparison |
| #191 | |
| #192 | | Feature | PR | Self-host A2A | MPL Core Mint | MCP Server | |
| #193 | | ------------------------------ | ------ | ------------- | ----------------------- | ---------------- | |
| #194 | | Cost | Free | Your hosting | ~0.003 SOL | Free | |
| #195 | | Setup time | 10 min | 1–2 hrs | 15 min | 30 min | |
| #196 | | 18-language translation | ✅ | ❌ (DIY) | Inherits from manifest | ❌ | |
| #197 | | Custom logic / tools | ❌ | ✅ | Depends on manifest | ✅ tools only | |
| #198 | | Transferable ownership | ❌ | ❌ | ✅ | ❌ | |
| #199 | | On-chain proof | ❌ | ❌ | ✅ | ❌ | |
| #200 | | Shows up on `/agents` | ✅ | ✅ | ✅ | ✅ (under Tools) | |
| #201 | | Shows up on `/agents-registry` | ✅ | ✅ | ✅ (with asset address) | ✅ | |
| #202 | | Auto-deploy | ✅ | Your CI | On mint | Your CI | |
| #203 | |
| #204 | --- |
| #205 | |
| #206 | ## Tracking Your Agent |
| #207 | |
| #208 | Once deployed, monitor your agent at: |
| #209 | |
| #210 | - **Gallery card**: `https://x402.wtf/agents/{identifier}` |
| #211 | - **Registry entry**: `https://x402.wtf/agents-registry?filter={identifier}` |
| #212 | - **Usage stats** (A2A call counts, install counts): `https://x402.wtf/agents/{identifier}/stats` |
| #213 | - **On-chain asset** (if minted): `https://solscan.io/token/{asset-address}` |
| #214 | |
| #215 | --- |
| #216 | |
| #217 | ## FAQ |
| #218 | |
| #219 | **Q: Do I have to open-source my agent?** |
| #220 | A: Only if you go Path 1 (PR). Paths 2, 3, 4 keep your implementation private — the hub only needs the public manifest. |
| #221 | |
| #222 | **Q: Can I monetize my agent?** |
| #223 | A: Yes. Self-hosted agents can require an API key or x402 payment before responding. On-chain minted agents can enforce royalties via MPL Core. |
| #224 | |
| #225 | **Q: What happens if my A2A server goes down?** |
| #226 | A: The hub marks it `offline` in `/agents-registry` but keeps the card visible. Three failed polls in 24h → hidden from the default gallery until it recovers. |
| #227 | |
| #228 | **Q: Can I update a minted on-chain agent?** |
| #229 | A: Yes, as long as you hold update authority on the MPL Core asset. Update the metadata URI or manifest, re-register, done. |
| #230 | |
| #231 | **Q: Can one identifier have multiple deployment paths?** |
| #232 | A: Yes. Recommended combo for serious agents: Path 1 (public prompt + translations) + Path 3 (on-chain mint) + Path 2 (private tools behind A2A). |
| #233 | |
| #234 | --- |
| #235 | |
| #236 | ## Related Docs |
| #237 | |
| #238 | - [AGENT_GUIDE.md](./AGENT_GUIDE.md) — writing effective prompts |
| #239 | - [API.md](./API.md) — the full endpoint surface |
| #240 | - [CONTRIBUTING.md](./CONTRIBUTING.md) — PR workflow |
| #241 | - [I18N_WORKFLOW.md](./I18N_WORKFLOW.md) — translation pipeline |
| #242 | - [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) — common issues |
| #243 |