Loading…
Stellar testnet demo
Give your AI agents a wallet with on-chain spending limits
Sign in with your Stellar wallet and get your own smart account. Every agent you add gets its own key and a daily USDC limit that the contract enforces, so no prompt can talk it into spending more.
TEST KEY A throwaway ed25519 key made in this browser tab and funded by friendbot. For testing only, never for real funds.
-
Your wallet holds the keysYour G address is the only admin of your smart account. The service never sees your owner key.
-
A daily limit per agentEach agent is a rule on your account with its own key and a spending-limit policy, checked on-chain.
-
Bring your own agentChat here, or connect Claude Code or any MCP client with a per-agent API key.
Set up your agent wallet
Two steps: deploy your smart account, then move some test USDC into it.
Agents
Recent payments
OPENROUTER_API_KEY is not set. The server cannot call the model, so the chat will not reply. Agents still work over MCP.
Chat with your agent
The agent pays USDC from your smart account but cannot go over its daily limit: the contract itself enforces it. Try:
No agents yet
Add an agent on the dashboard first. Each agent gets its own key and daily limit.
Go to the dashboard
How it works
An agent can make mistakes or fall for a prompt injection. That is why its limit lives in your smart account, not in a prompt, and why only your wallet can change it.
- Your wallet owns the account. Each user gets an OpenZeppelin smart account whose address is derived from their G address. Rule #0 (Default) has a single
Delegatedsigner: your G address. Adding or revoking agents, changing limits and withdrawing all need your wallet's signature. - The service never holds the owner key. It prepares each operation and shows you its summary; you sign the transaction or authorization entry in Freighter, and the relayer submits it and pays the fee.
- Each agent is a rule with its own key. A
CallContract(USDC)context rule with one ed25519 agent key. The agent can call USDC and nothing else, and cannot touch its own rule or any other. - Each agent has an on-chain limit. A spending-limit policy allows N USDC per 17280 ledgers (~1 day). Going over fails with
Error(Contract, #3221), and no prompt can get around that. - Agent keys are encrypted at rest. The service generates a fresh key per agent and stores it encrypted. It uses the key only to sign that agent's payments (the AuthDigest checked in
__check_auth). - API keys are stored hashed. An external agent connects to
/mcpwithAuthorization: Bearer awk_…. The key picks the agent, is shown once, and can be revoked at any time. - Revoking is instant and on-chain. It sets the rule's
valid_untila few seconds ahead, after which the agent's signatures stop passing. Restoring clears it. - Large chat payments need your approval (above 2 USDC). This off-chain check sits on top of the on-chain limit.