# Nod > Nod is a Stellar wallet that AI apps spend from inside an allowance the owner sets. You add it to Claude, or any MCP app, with one connector URL. Each AI app gets its own allowance, for example 5 USDC until tomorrow, which your passkey signs onto your Stellar account. Inside it, the app pays for APIs over x402 and pays your contacts on its own. Anything bigger comes back as a link, and one passkey tap approves that exact recipient and amount. Small stuff, it just pays. Big stuff needs your nod. Built at HackMeridian 2026 (Lisbon, 25–26 October 2026), Genesis builder track, Stellar Composed thematic track. Runs on Stellar testnet only; no real money moves. ## Try it - Site: https://testnet.trynod.si/ (also reachable at https://hack-meridian-testnet.kristjan-grm11775.workers.dev/) - Claude connector (Settings → Connectors → Add custom connector): https://testnet.trynod.si/mcp - Steps: add the connector, create a passkey wallet on the page that opens (new wallets get 10 testnet USDC), approve the 5 USDC allowance, then ask Claude "Buy the market brief", "Send Alice 2 USDC" and "Pay Bob 5 USDC for dinner". The last one is more than the 2.90 left, so it needs your passkey. - No Claude needed: watch a sample agent run the same steps on Nod's own demo wallet, with a live log and explorer links: https://testnet.trynod.si/sample - Full judge test path: https://github.com/grmkris/hack-meridian-2026/blob/main/evidence/JUDGE-TEST-PATH.md ## How it works - Passkey wallet: Face ID or a fingerprint creates an OpenZeppelin smart account (a Stellar contract account). No seed phrase. The owner never needs XLM; Nod's relayer account is the transaction source and pays every fee. - An allowance per AI app: connecting an app over OAuth 2.1 and approving its allowance is one step. Each allowance is a context rule on the account, scoped to USDC transfers, with OpenZeppelin's spending-limit policy and an expiry. - The limit lives on Stellar, not on Nod's server: the service holds only the app's key, and the account rejects anything over the allowance. Even if the server were compromised, the most it could spend for an app is what the owner allowed. - Pays for APIs: x402 sellers are paid through public facilitators (x402.org, OpenZeppelin Channels), never one Nod runs. Hosted facilitators do not accept smart-account payers yet, so each app key also owns a small account with sponsored reserves that it fills from the wallet under the same policy, then pays from with the stock x402 client. - Needs your nod: a payment above what is left is never signed with the app's key. It becomes a link showing the recipient's name and address, the amount and which app asked; the passkey signs exactly that payment. - Ask twice, pay once: repeated requests return the same receipt. Receipts come only after settlement. - Pays people who have never held USDC: a claim link. The recipient signs once, and a small router calls the USDC contract's trust function (CAP-73) and the transfer in one transaction. - Revoke: Nod stops signing at once and sweeps the app's leftover balance back; one passkey tap then removes the rule from the account (until then the service refuses to sign). ## Stellar building blocks (testnet ids) - OpenZeppelin smart account WASM: 1b5f4534a76322da2ad7c745f6900857a6802b0ca79850c35a03561df997785a - OpenZeppelin spending-limit policy: CABXBYJNZ7IUW4G3D6BND5YCAQF3ASSDMDAOKQQ63UYFSO7WUU2TIP5G - WebAuthn (secp256r1) verifier: CC7EKIHQP3TN4CARQDND6CEOY2UXLWWC2X5GHTD5NLAT7BG5GPZIOM3F - Ed25519 verifier: CAAVTMCBXEIBPR64EAASKFXERVPYFZA2JYP5A3BG6PESWEFUJX5IHKN4 - Circle USDC, Stellar Asset Contract: CBIELTK6YBZJU5UP2WWQEUCYKLPU6AUNZ2BQ4WWFEIE3USCIHMXQDAMA - Trust-and-pay router (CAP-73 SAC trust + transfer): CCLFB4I4CNGWHHL53UO33CSWKKXJBANMDGOGL43J7RBT7SWK2H2BPGN4 (source: contracts/onboard; `stellar contract build` with stellar-cli 28.1.0 and rustc 1.98.1 reproduces the deployed WASM, sha256 39c97734…) - Relayer pool (fee payers on the testnet stage, listed at /api/health): GBCALSA3XQAWW24AXGFWJIGNUCDBCMUPPWC5XHMZ22VY4HMX6XCFYWBR, GAWYWVMHLTRN6N7DXKV3XYCLAFPCPPUXPDFC7J5KL3LNKO26YNJSYE4I - x402 network: stellar:testnet; facilitators: x402.org and OpenZeppelin Channels - Demo x402 seller (0.10 USDC market brief from the Stellar DEX order book): https://hm26-seller.kristjan-grm11775.workers.dev/api/market-brief ## Proof on testnet One rehearsal on the live site (release 19e1c13, 25 October 2026, 15:12 UTC): acceptance tests 1, 2 and 4–9 passed live; test 3 (a forced over-limit transfer, not reachable through MCP by design) is proven in spike S1: - The passkey wallet this run created: https://stellar.expert/explorer/testnet/contract/CA357ZQSG54XPLIZF4NTNOYUU7R3IBOKZ7UALM5WVZCT5C2GJZWD45W2 - x402: the AI app's key pulls 1.00 USDC into its pocket under the allowance: https://stellar.expert/explorer/testnet/tx/978479126c9339de3a2cf4140dcef4958aa13d95ea39408b50cbf4ae413ed702 - x402: the pocket pays the seller 0.10 USDC, settled by OpenZeppelin Channels: https://stellar.expert/explorer/testnet/tx/e3e62e07dbf11f0bd75ac795a3bef5a50fcc6ffd64e610c98a70dc9676890990 - 2 USDC to Alice inside the allowance, signed by the AI app's key: https://stellar.expert/explorer/testnet/tx/fb77bd0f01aeb515b967e7bf5f7d0b1f8ec5c4c6af7889263ed3172a0a8ebefe - 20 USDC to Bob, over the allowance, approved with the passkey: https://stellar.expert/explorer/testnet/tx/fbfd200cc85525ee65a0a55f4b3dc338eedf37c1c8273abcc0ac7701f09e97da - Carol's trustline and 5 USDC in one transaction (CAP-73 claim link): https://stellar.expert/explorer/testnet/tx/565b7f0740d2cb73975939107c6b3329a03d60d26925101ba7e9a7ae5660735c - Revoke removes the allowance rule: https://stellar.expert/explorer/testnet/tx/55beab6dd2866dd95f6bfcc7209d4c3c7e8a423d4955de5607a6009da1003279 - Revoke sweeps the pocket back to the wallet: https://stellar.expert/explorer/testnet/tx/00129674edaed2fcce96c73745587f2c599704850c182c38f7d7c12ab5ee55a6 Spikes: - An allowance spends exactly 5.0 USDC; one stroop more is rejected: https://stellar.expert/explorer/testnet/tx/c0f6f923936b7dc4d716454ba3e3d3f43f21ddcf353e49e3e083d054bf5f9c57 - An over-allowance transfer forced onchain is rejected by the account (#3221): https://stellar.expert/explorer/testnet/tx/3daf4b000cb58ad1bbef3629c13a02d44403c4b690dd51815020cbc89723b42a ## Docs - README: https://github.com/grmkris/hack-meridian-2026#readme - Product spec: https://github.com/grmkris/hack-meridian-2026/blob/main/docs/SPEC.md - Build plan and architecture decisions: https://github.com/grmkris/hack-meridian-2026/blob/main/docs/BUILD-PLAN.md - Spike results with every transaction: https://github.com/grmkris/hack-meridian-2026/blob/main/docs/SPIKES.md - Source: https://github.com/grmkris/hack-meridian-2026 ## Optional - Mainnet readiness check (read-only): https://github.com/grmkris/hack-meridian-2026/blob/main/docs/research/mainnet.md - Pitch, vocabulary and demo script: https://github.com/grmkris/hack-meridian-2026/blob/main/docs/PITCH.md