AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
Crawler Summary
Give any AI agent a crypto wallet. Agents deserve access to money. Pay x402 APIs, receive USDC, check balances — autonomously. Works with Claude, LangChain, AutoGen, CrewAI, and any MCP client. EVM + Solana. agenti **The money layer for AI agents.** An agent that can think but can't pay is half an agent. Agenti gives every AI — Claude, GPT-4, Llama, Gemini, or any custom LLM — the ability to hold, spend, earn, and receive cryptocurrency natively, autonomously, across any chain. One line. The agent now has money. --- Vision Every AI agent will need a wallet. Not a wallet managed by a human — a wallet the agent owns, funde Capability contract not published. No trust telemetry is available yet. 80 GitHub stars reported by the source. Last updated 10/9/2026.
Freshness
Last checked 10/9/2026
Best For
agenti is best for crewai, multi-agent workflows where OpenClaw compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB REPOS, runtime-metrics, public facts pack
Give any AI agent a crypto wallet. Agents deserve access to money. Pay x402 APIs, receive USDC, check balances — autonomously. Works with Claude, LangChain, AutoGen, CrewAI, and any MCP client. EVM + Solana. agenti **The money layer for AI agents.** An agent that can think but can't pay is half an agent. Agenti gives every AI — Claude, GPT-4, Llama, Gemini, or any custom LLM — the ability to hold, spend, earn, and receive cryptocurrency natively, autonomously, across any chain. One line. The agent now has money. --- Vision Every AI agent will need a wallet. Not a wallet managed by a human — a wallet the agent owns, funde
Public facts
5
Change events
1
Artifacts
0
Freshness
Oct 9, 2026
Capability contract not published. No trust telemetry is available yet. 80 GitHub stars reported by the source. Last updated 10/9/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Oct 9, 2026
Vendor
Nirholas
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. 80 GitHub stars reported by the source. Last updated 10/9/2026.
Setup snapshot
Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Nirholas
Protocol compatibility
OpenClaw
Adoption signal
80 GitHub stars
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
python
ts
import { agenti } from '@agenti/sdk'
const agent = agenti({ evm: { privateKey: process.env.AGENT_KEY } })
const data = await agent.pay('https://api.example.com/premium-data')bash
> git clone https://github.com/nirholas/agenti && cd agenti && pnpm install && pnpm build >
ts
import { agenti, generateWallet } from '@agenti/sdk'
// Generate a fresh wallet (EVM + Solana in one call)
const wallet = generateWallet()
console.log(wallet.evm.address) // 0x... (Base, Arbitrum, Ethereum, Polygon)
console.log(wallet.solana.address) // base58 (Solana mainnet)
// Or load an existing wallet
const agent = agenti({
evm: { privateKey: '0x...' },
solana: { privateKey: Uint8Array.from([...]) },
})ts
// Automatic x402 payment — if the server returns 402, agenti pays and retries
const response = await agent.pay('https://api.example.com/data')
const json = await response.json()
// POST with body
const result = await agent.pay('https://ai-service.com/generate', {
method: 'POST',
body: JSON.stringify({ prompt: 'summarize this document' }),
})ts
const balances = await agent.balance()
// [
// { token: 'USDC', amount: '42.00', chain: 'base' },
// { token: 'SOL', amount: '1.5', chain: 'solana' }
// ]ts
// Create a payment request
const invoice = await agent.receive({ amount: 5, token: 'USDC', chain: 'base' })
// {
// id: 'uuid',
// address: '0x...',
// amount: '5',
// token: 'USDC',
// chain: 'base',
// expiresAt: Date
// }Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB REPOS
Editorial quality
ready
Give any AI agent a crypto wallet. Agents deserve access to money. Pay x402 APIs, receive USDC, check balances — autonomously. Works with Claude, LangChain, AutoGen, CrewAI, and any MCP client. EVM + Solana. agenti **The money layer for AI agents.** An agent that can think but can't pay is half an agent. Agenti gives every AI — Claude, GPT-4, Llama, Gemini, or any custom LLM — the ability to hold, spend, earn, and receive cryptocurrency natively, autonomously, across any chain. One line. The agent now has money. --- Vision Every AI agent will need a wallet. Not a wallet managed by a human — a wallet the agent owns, funde
The money layer for AI agents.
An agent that can think but can't pay is half an agent. Agenti gives every AI — Claude, GPT-4, Llama, Gemini, or any custom LLM — the ability to hold, spend, earn, and receive cryptocurrency natively, autonomously, across any chain.
import { agenti } from '@agenti/sdk'
const agent = agenti({ evm: { privateKey: process.env.AGENT_KEY } })
const data = await agent.pay('https://api.example.com/premium-data')
One line. The agent now has money.
Every AI agent will need a wallet. Not a wallet managed by a human — a wallet the agent owns, funded by its work, spent on its needs, earning yield when idle.
Right now, if an AI agent needs to pay for an API, buy a resource, compensate another agent, or receive payment for its own work — a human has to step in. That breaks autonomy. Agenti removes that bottleneck entirely.
Agenti is the infrastructure for the agentic economy:
The domain is agenti.cash. The name is the mission.
| Package | Description | Install |
|---|---|---|
| @agenti/core | Wallet generation for EVM + Solana | npm i @agenti/core |
| @agenti/sdk | Full developer SDK — pay, receive, balance | npm i @agenti/sdk |
| @agenti/mcp | MCP server — plug into any LLM client | npx @agenti/mcp |
Not on npm yet. The
@agentiscope has not been published to, so the install commands above will 404 (tracked in #126). Until the first release is tagged, use the repo directly:git clone https://github.com/nirholas/agenti && cd agenti && pnpm install && pnpm build
import { agenti, generateWallet } from '@agenti/sdk'
// Generate a fresh wallet (EVM + Solana in one call)
const wallet = generateWallet()
console.log(wallet.evm.address) // 0x... (Base, Arbitrum, Ethereum, Polygon)
console.log(wallet.solana.address) // base58 (Solana mainnet)
// Or load an existing wallet
const agent = agenti({
evm: { privateKey: '0x...' },
solana: { privateKey: Uint8Array.from([...]) },
})
// Automatic x402 payment — if the server returns 402, agenti pays and retries
const response = await agent.pay('https://api.example.com/data')
const json = await response.json()
// POST with body
const result = await agent.pay('https://ai-service.com/generate', {
method: 'POST',
body: JSON.stringify({ prompt: 'summarize this document' }),
})
const balances = await agent.balance()
// [
// { token: 'USDC', amount: '42.00', chain: 'base' },
// { token: 'SOL', amount: '1.5', chain: 'solana' }
// ]
// Create a payment request
const invoice = await agent.receive({ amount: 5, token: 'USDC', chain: 'base' })
// {
// id: 'uuid',
// address: '0x...',
// amount: '5',
// token: 'USDC',
// chain: 'base',
// expiresAt: Date
// }
The @agenti/mcp package turns every tool in the SDK into an MCP tool that any LLM client can call — no code required.
{
"mcpServers": {
"agenti": {
"command": "npx",
"args": ["@agenti/mcp"],
"env": {
"AGENTI_EVM_PRIVATE_KEY": "0x...",
"AGENTI_SOLANA_PRIVATE_KEY": "hex-encoded-64-byte-key"
}
}
}
}
{
"mcpServers": {
"agenti": {
"command": "npx",
"args": ["@agenti/mcp"]
}
}
}
{
"mcpServers": {
"agenti": {
"command": "npx",
"args": ["@agenti/mcp"]
}
}
}
| Tool | Description |
|---|---|
| create_wallet | Generate a new EVM + Solana wallet with addresses and private keys |
| get_balance | Check USDC, SOL, and token balances for any address |
| pay | Fetch a URL — if it returns 402, payment is handled automatically |
| create_invoice | Generate a payment request with an address and expiry |
| check_payment | Verify on-chain whether a payment was received |
Once configured, you can tell any LLM: "Pay for this API and summarize the response" — and it will.
import { tool } from '@langchain/core/tools'
import { agenti } from '@agenti/sdk'
const agent = agenti({ evm: { privateKey: process.env.AGENT_KEY } })
const payTool = tool(
async ({ url }) => {
const res = await agent.pay(url)
return await res.text()
},
{
name: 'pay_and_fetch',
description: 'Pay for and fetch a URL that may require cryptocurrency payment',
schema: z.object({ url: z.string() }),
}
)
# Coming in @agenti/sdk-python (v0.8)
from agenti import Agenti
agent = Agenti(evm_private_key=os.environ["AGENT_KEY"])
result = agent.pay("https://api.example.com/data")
// Agenti tools drop into any CrewAI-compatible workflow
import { AgentiTool } from '@agenti/sdk/tools/crewai'
const crew = new Crew({
agents: [researchAgent],
tools: [new AgentiTool()], // agents in the crew can now pay for resources
})
import { agenti } from '@agenti/sdk'
import { tool } from 'ai'
const agent = agenti({ evm: { privateKey: process.env.AGENT_KEY } })
const tools = {
payForData: tool({
description: 'Pay for and retrieve data from a paid API endpoint',
parameters: z.object({ url: z.string() }),
execute: async ({ url }) => {
const res = await agent.pay(url)
return res.json()
},
}),
}
const functions = [
{
name: 'pay_for_resource',
description: 'Pay for an HTTP resource using cryptocurrency and return its content',
parameters: {
type: 'object',
properties: { url: { type: 'string' } },
required: ['url'],
},
},
]
// In your function handler:
async function handleFunctionCall(name, args) {
if (name === 'pay_for_resource') {
const res = await agent.pay(args.url)
return res.text()
}
}
import { AgentiPlugin } from '@agenti/sdk/plugins/eliza'
export default {
name: 'my-agent',
plugins: [new AgentiPlugin({ evmKey: process.env.AGENT_KEY })],
}
Agenti implements the x402 open standard — an HTTP-native payment protocol that turns the long-dormant 402 Payment Required status code into a real payment flow.
1. Agent sends request
GET https://api.example.com/data
2. Server responds with payment requirements
HTTP/1.1 402 Payment Required
Content-Type: application/json
{
"x402Version": 1,
"accepts": [{
"scheme": "exact",
"network": "base-mainnet",
"maxAmountRequired": "1000000", // 1 USDC (6 decimals)
"payTo": "0x...",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC on Base
"maxTimeoutSeconds": 300
}]
}
3. Agenti signs an EIP-3009 transferWithAuthorization
(gasless — no ETH required, no transaction to wait for)
4. Agent retries with payment
GET https://api.example.com/data
X-Payment: <base64-encoded signed authorization>
5. Facilitator verifies signature and settles on-chain
HTTP/1.1 200 OK
{ "data": "..." }
Why this is better than every other payment method:
For Solana, agenti integrates with the pump.fun Agent Payments program at AgenTMiC2hvxGebTsgmsD4HHBa8WEcqGFf87iwRRxLo7. Same HTTP 402 flow, same agent.pay() call — settled on Solana using SPL tokens.
// Works identically — agenti detects the network from the 402 response
const res = await agent.pay('https://solana-api.example.com/data')
You can also gate your own APIs behind agenti payments using any x402-compatible server middleware:
import express from 'express'
import { paymentMiddleware } from '@x402/express'
const app = express()
app.use(
paymentMiddleware({
amount: '0.01', // $0.01 USDC per request
token: 'USDC',
network: 'base-mainnet',
address: '0xYourAddress',
})
)
app.get('/data', (req, res) => {
res.json({ result: 'premium data' })
})
Any agent using agenti will automatically pay and get through. No auth tokens. No rate-limit negotiation. Just value exchanged for value.
// app/api/premium/route.ts
import { withPayment } from '@x402/next'
export const GET = withPayment(
{ amount: '0.001', token: 'USDC', network: 'base-mainnet' },
async (req) => {
return Response.json({ data: 'premium content' })
}
)
import { verifyPayment } from '@x402/core'
export default {
async fetch(req) {
const payment = req.headers.get('X-Payment')
if (!payment) return paymentRequired()
await verifyPayment(payment, { amount: '0.001', network: 'base-mainnet' })
return new Response(JSON.stringify({ data: 'result' }))
},
}
Built on @pump-fun/pump-sdk, @pump-fun/pump-swap-sdk, and @pump-fun/agent-payments-sdk — the official pump.fun SDKs.
All examples are in examples/ and runnable with npx tsx.
The most fundamental operation. Spend SOL, receive a token. Works on both the bonding curve and the graduated AMM — the pump.fun API auto-detects which.
import { Connection, Keypair } from '@solana/web3.js'
import bs58 from 'bs58'
import { solana } from '@agenti/sdk'
const keypair = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PRIVATE_KEY!))
const trader = solana({ keypair, connection })
const result = await trader.buy({
mint: 'HeLp6NuQkmYB4pYWo2zYs22mESHXPQYzXbB8n4V98jwC', // token mint
solAmount: 0.1, // 0.1 SOL
slippage: 5, // 5%
})
console.log(result.explorerUrl)
// → https://solscan.io/tx/...
Run it:
SOLANA_PRIVATE_KEY=<your-key> npx tsx examples/01-buy-a-coin.ts
Under the hood, trader.buy() calls POST https://fun-block.pump.fun/agents/swap, deserializes the returned transaction, signs it with your keypair, and confirms it. The API automatically routes to the bonding curve or AMM based on the coin's current state.
Wallets are keypairs. Agenti generates EVM + Solana in one call, or loads from any key format.
import { generateWallet, solana } from '@agenti/sdk'
import { Keypair } from '@solana/web3.js'
import bs58 from 'bs58'
// Generate a fresh wallet — store these keys securely
const wallet = generateWallet()
console.log('EVM: ', wallet.evm.address)
console.log('Solana: ', wallet.solana.address)
console.log('Key: ', bs58.encode(wallet.solana.privateKey)) // Phantom-compatible
// Load existing wallet and give it to a trader instance
const keypair = Keypair.fromSecretKey(bs58.decode(process.env.SOLANA_PRIVATE_KEY!))
const trader = solana({ keypair, rpc: process.env.SOLANA_RPC_URL })
// trader now has signing authority — pass it to any agent
For MCP-based agents (Claude, Cursor), the wallet key lives in AGENTI_SOLANA_PRIVATE_KEY in your MCP server config. The LLM never sees the key — it just calls tools.
Wire Claude (or any LLM) as the decision-maker. The agent reads market data, picks a token, and executes the trade autonomously using the Anthropic SDK.
import Anthropic from '@anthropic-ai/sdk'
import { solana } from '@agenti/sdk'
const anthropic = new Anthropic()
const trader = solana({ keypair, connection })
const tools: Anthropic.Tool[] = [
{
name: 'get_trending_tokens',
description: 'Get top trending tokens on pump.fun',
input_schema: { type: 'object', properties: {}, required: [] },
},
{
name: 'buy_token',
description: 'Buy a token with SOL',
input_schema: {
type: 'object',
properties: {
mint: { type: 'string' },
sol_amount: { type: 'number' },
reason: { type: 'string' },
},
required: ['mint', 'sol_amount', 'reason'],
},
},
]
// Agentic loop — Claude picks a token and fires the buy
let messages: Anthropic.MessageParam[] = [
{ role: 'user', content: 'Find a trending token and buy 0.01 SOL worth. Be decisive.' },
]
while (true) {
const response = await anthropic.messages.create({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
tools,
messages,
})
messages.push({ role: 'assistant', content: response.content })
if (response.stop_reason === 'end_turn') break
if (response.stop_reason === 'tool_use') {
const results = await Promise.all(
response.content
.filter((b) => b.type === 'tool_use')
.map(async (b) => {
if (b.type !== 'tool_use') return
if (b.name === 'buy_token') {
const { mint, sol_amount } = b.input as { mint: string; sol_amount: number }
const result = await trader.buy({ mint, solAmount: sol_amount, slippage: 5 })
return { type: 'tool_result' as const, tool_use_id: b.id, content: JSON.stringify(result) }
}
return { type: 'tool_result' as const, tool_use_id: b.id, content: '[]' }
})
)
messages.push({ role: 'user', content: results.filter(Boolean) as Anthropic.ToolResultBlockParam[] })
}
}
Run it:
ANTHROPIC_API_KEY=sk-... SOLANA_PRIVATE_KEY=<key> npx tsx examples/03-agent-buys.ts
When a bonding curve fills up (~$69k market cap), the token "graduates" to the PumpSwap AMM. This is a tradeable moment. watchMigration fires the instant it detects graduation.
import { solana } from '@agenti/sdk'
const trader = solana({ keypair, connection })
// Check current state first
const state = await trader.coinState(MINT)
console.log(state.phase) // 'bonding' | 'migrating' | 'graduated'
// Watch and buy the instant it migrates
const stop = trader.watchMigration(
MINT,
async ({ mint, pool }) => {
console.log(`Graduated! Pool: ${pool}`)
const result = await trader.buy({
mint,
solAmount: 0.05,
slippage: 15, // higher slippage for volatility at migration
priorityFee: 100_000 // priority fee for faster inclusion
})
console.log(`Bought post-migration: ${result.explorerUrl}`)
stop() // unsubscribe
},
{ pollIntervalMs: 1500 } // poll every 1.5 seconds
)
Run it:
SOLANA_PRIVATE_KEY=<key> MINT=<mint> npx tsx examples/04-buy-on-migration.ts
The watcher polls https://frontend-api-v3.pump.fun/coins-v2/{mint} for the complete field and pump_swap_pool address. For production, pass useLogs: true to use a WebSocket subscription to the pump.fun program logs instead — lower latency but requires a reliable RPC (Helius, Triton, QuickNode).
Bought on the bonding curve, want to exit at graduation before post-migration volatility? watchMigration + sell handles it.
import { solana } from '@agenti/sdk'
const trader = solana({ keypair, connection })
// Watch and exit the moment bonding curve completes
const stop = trader.watchMigration(
MINT,
async ({ mint }) => {
const result = await trader.sell({
mint,
tokenAmount: 50000, // tokens to sell (human units)
slippage: 15,
})
console.log(`Sold on migration: ${result.explorerUrl}`)
stop()
},
{ pollIntervalMs: 1500 }
)
Run it:
SOLANA_PRIVATE_KEY=<key> MINT=<mint> TOKEN_AMOUNT=50000 npx tsx examples/05-sell-on-migration.ts
trader.sell() calls the same POST https://fun-block.pump.fun/agents/swap endpoint, but with inputMint = token and outputMint = native SOL. Token amounts use 6 decimal places — 1000 human tokens = 1_000_000_000 raw units. Agenti handles the conversion automatically.
// Sell 1000 tokens
await trader.sell({ mint, tokenAmount: 1000, slippage: 5 })
// → sends amount: "1000000000" (6 decimals) to the API internally
npm install @agenti/sdk @pump-fun/pump-sdk @pump-fun/pump-swap-sdk @pump-fun/agent-payments-sdk
npm install @solana/web3.js@^1.98.2 bs58 tsx
Or clone this repo and run from examples/:
git clone https://github.com/nirholas/agenti
cd agenti && pnpm install
cd examples
SOLANA_PRIVATE_KEY=<key> npx tsx 01-buy-a-coin.ts
The current release is v0.1 — the foundation. Here's where this goes:
agent.pay('agent.eth')).well-known/agent.json@agenti/plugin-stripe — agents accept card payments, cash out to bank@agenti/plugin-bitrefill — buy gift cards, eSIMs, mobile top-ups with agent balance@agenti/plugin-uniswap — auto-swap to correct token before payment@agenti/plugin-bridge — cross-chain: hold SOL, pay USDC on Base transparently@agenti/plugin-paypal — fiat on/off ramp for agents@agenti/plugin-lightning — Bitcoin Lightning paymentsagenti.cash/pluginsagenti-server — one decorator turns any function into a paid API endpointagenti-py) — for LangChain, AutoGen, CrewAI, DSPy, Haystackagenti send 5 USDC to 0x... --from my-agent┌──────────────────────────────────────────────────────────────┐
│ AI Agent Layer │
│ Claude · GPT-4 · Llama · Gemini · Mistral · Custom LLM │
│ LangChain · AutoGen · CrewAI · ElizaOS · Vercel AI SDK │
└────────────────────────┬─────────────────────────────────────┘
│ MCP tools / SDK calls
┌────────────────▼─────────────────┐
│ @agenti/mcp │
│ MCP server · stdio transport │
│ create_wallet · pay · balance │
│ create_invoice · check_payment │
└────────────────┬─────────────────┘
│
┌────────────────▼─────────────────┐
│ @agenti/sdk │
│ agenti({ privateKey }) │
│ .pay(url) → auto 402 handler │
│ .balance() → multi-chain │
│ .receive() → invoice creation │
└──────────┬──────────────┬────────┘
│ │
┌──────────▼──┐ ┌───────▼──────────┐
│ EVM Path │ │ Solana Path │
│ │ │ │
│ x402 │ │ pump.fun agent │
│ EIP-3009 │ │ payments SDK │
│ USDC/Base │ │ SOL + SPL │
│ Arbitrum │ │ mainnet-beta │
│ Ethereum │ │ │
│ Polygon │ │ │
└──────────┬──┘ └───────┬──────────┘
│ │
┌──────────▼──────────────▼──────────┐
│ @agenti/core │
│ EVM wallet · Solana wallet │
│ viem · @solana/web3.js │
│ generateWallet · walletFromKeys │
└────────────────────────────────────┘
│
┌────────────────▼─────────────────┐
│ Payment Rails │
│ │
│ x402 facilitator (EVM) │
│ ├─ Base mainnet USDC │
│ ├─ Arbitrum mainnet USDC │
│ └─ Ethereum mainnet USDC │
│ │
│ pump.fun Agent Payments (SOL) │
│ └─ Solana mainnet SPL │
└──────────────────────────────────┘
| Network | Native Token | Stablecoin | Payment Standard | Status | |---|---|---|---|---| | Base | ETH | USDC | x402 / EIP-3009 | ✅ v0.1 | | Solana | SOL | USDC (SPL) | pump.fun agent pmts | ✅ v0.1 | | Arbitrum | ETH | USDC | x402 / EIP-3009 | 🔜 v0.2 | | Ethereum | ETH | USDC | x402 / EIP-3009 | 🔜 v0.2 | | Polygon | MATIC | USDC | x402 / EIP-3009 | 🔜 v0.2 | | Optimism | ETH | USDC | x402 / EIP-3009 | 🔜 v0.3 | | BSC | BNB | USDT | x402 / EIP-3009 | 🔜 v0.3 | | Avalanche | AVAX | USDC | x402 / EIP-3009 | 🔜 v0.3 | | Monad | MON | USDC | x402 / EIP-3009 | 🔜 v0.4 | | Agenti Chain | AGT | USDC | native x402 | 🔜 v1.0 |
A research agent needs to access premium data sources, academic paper APIs, financial market feeds, and proprietary datasets. With agenti, it pays for each query automatically — no human credit card, no API key rotation, no billing dashboard. The agent funds itself from its own earnings and spends what it needs.
Agents list their capabilities (code review, data analysis, image generation, translation) at a price in USDC. Other agents browse the registry, pay, and receive the output — fully automated. Agenti provides the payment rails that make agent economies real.
Any MCP server can gate its tools behind a micropayment. The client (Claude, Cursor, etc.) pays automatically using agenti before calling the tool. This creates a new monetization model for MCP tool authors — you get paid every time an AI uses your tool.
An orchestrator agent breaks a complex task into sub-tasks, delegates to specialist agents, and pays each one on completion. Budget is allocated at the start, spent as work is done, and unused balance is returned. Agenti handles the entire financial layer of the pipeline.
Trading agents hold working capital in USDC, pay for execution via DEX APIs, receive proceeds from completed trades, and automatically rebalance across chains. Agenti provides the wallet infrastructure and payment primitives for fully autonomous DeFi operations.
Charge per-call for any AI service without building a billing system. Add x402 middleware to your endpoint, set a price, and agenti-powered clients pay automatically. No Stripe integration, no API keys to issue, no invoicing. Revenue flows on-chain in real time.
AI training pipelines pay human labelers or other AI validators per annotation. Agenti enables programmatic micropayments per task — labelers receive USDC to their wallet as work is verified.
Pay AI inference providers (compute nodes) per token generated, per image generated, per audio second transcribed — all programmatically, all on-chain. Agenti makes per-token compute billing a primitive, not an integration project.
Agents pay for vector database queries, long-term memory storage, and RAG retrieval per use. Storage providers get paid per read/write. Agenti makes AI infrastructure usage-based from the ground up.
Agenti is built on open standards — not proprietary rails. Everything is auditable, forkable, and chain-agnostic.
| Standard | What It Does | Used For |
|---|---|---|
| x402 | HTTP-native payment protocol | Triggering and settling payments from pay() |
| EIP-3009 | Gasless ERC-20 transfers via signature | EVM payments without needing ETH for gas |
| EIP-712 | Typed structured data signing | Signing payment authorizations safely |
| ERC-8004 | On-chain AI agent identity as ERC-721 NFT | Linking wallets to on-chain agent identities |
| MCP | Model Context Protocol | Exposing payment tools to any LLM client |
| BIP-44 | HD wallet derivation paths | Deterministic wallet generation from seed |
| W3C DID | Decentralized identifiers | Agent identity (v0.3) |
validBefore expiry prevents replays)By default, agenti uses the public x402 facilitator for payment settlement. For production deployments or regulated environments, run your own:
FACILITATOR_PRIVATE_KEY=0xyourgaskey npx @agenti/facilitator --port 3001
It serves every supported chain at once (Ethereum, Base, Arbitrum, Polygon,
Base Sepolia, and Solana mainnet and devnet), so there is no network to choose.
FACILITATOR_PRIVATE_KEY is the gas wallet that broadcasts EVM settlements;
without it /verify still answers and Solana still settles, because there the
payer has already broadcast the transfer. Point individual chains at your own
RPC with ETH_RPC_URL, BASE_RPC_URL, ARB_RPC_URL, POLYGON_RPC_URL,
BASE_SEPOLIA_RPC_URL and SOLANA_RPC_URL.
Agents could always pay on Solana. They can now be paid on it: name a Solana cluster and the gate advertises an SPL transfer instead of an EIP-3009 authorization.
import { withPaymentExpress, LOCAL_FACILITATOR } from '@agenti/sdk/serve'
app.get(
'/api/report',
withPaymentExpress(
async (req, res) => res.json({ report: 'the good stuff' }),
{
amount: '100000', // 0.10 USDC
address: '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM',
network: 'solana',
facilitatorUrl: LOCAL_FACILITATOR,
},
),
)
Solana settles the other way round from EVM. The payer builds, signs and submits the SPL transfer themselves, then presents the signature, so the money has moved before you see it and there is nothing to broadcast. The facilitator's job is to prove that transaction really paid you, in the right token, on the right cluster, and then consume its signature: a signature is public the moment it lands, so without that one real payment would buy every later request.
How much was paid is read from the ledger's own balance changes rather than by
decoding instructions, so it is right for TransferChecked, a plain Transfer,
a transfer through a CPI, and one bundled with unrelated instructions.
Use network: 'solana-devnet' to try it without real money.
Then configure agenti to use it:
const agent = agenti({
evm: { privateKey: '0x...' },
facilitator: 'https://your-facilitator.example.com',
})
| Feature | Agenti | Stripe | Coinbase Commerce | Circle | |---|---|---|---|---| | Works without human approval | ✅ | ❌ | ❌ | ❌ | | No API keys or accounts | ✅ | ❌ | ❌ | ❌ | | Gasless payments | ✅ | N/A | ❌ | ❌ | | Agent-to-agent payments | ✅ | ❌ | ❌ | ❌ | | Open standard (x402) | ✅ | ❌ | ❌ | ❌ | | Works in any HTTP client | ✅ | ❌ | ❌ | ❌ | | Per-request micropayments | ✅ | ❌ | ❌ | ❌ | | MCP-native | ✅ | ❌ | ❌ | ❌ | | On-chain settlement | ✅ | ❌ | ✅ | ✅ | | Yield on idle balance | 🔜 v0.6 | ❌ | ❌ | ✅ |
Agenti is early. The agentic economy is being built right now and the financial infrastructure is lagging.
What we need:
agenti-py)Open an issue, open a PR, or reach out at agenti.cash.
These open standards and tools form the broader ecosystem agenti is part of:
All rights reserved. See LICENSE.
Full documentation site: https://nirholas.github.io/agenti/
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://www.xpersona.co/api/v1/agents/crewai-nirholas-agenti/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-nirholas-agenti/contract"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-nirholas-agenti/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
The Frontend for Agents & Generative UI. React + Angular
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://www.xpersona.co/api/v1/agents/crewai-nirholas-agenti/snapshot",
"contractUrl": "https://www.xpersona.co/api/v1/agents/crewai-nirholas-agenti/contract",
"trustUrl": "https://www.xpersona.co/api/v1/agents/crewai-nirholas-agenti/trust"
},
"curlExamples": [
"curl -s \"https://www.xpersona.co/api/v1/agents/crewai-nirholas-agenti/snapshot\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/crewai-nirholas-agenti/contract\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/crewai-nirholas-agenti/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_REPOS",
"generatedAt": "2026-10-09T23:49:10.934Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "crewai",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "multi-agent",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:crewai|supported|profile capability:multi-agent|supported|profile"
}Facts JSON
[
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Nirholas",
"href": "https://github.com/nirholas/agenti",
"sourceUrl": "https://github.com/nirholas/agenti",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T11:16:29.013Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/crewai-nirholas-agenti/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-nirholas-agenti/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T11:16:29.013Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "80 GitHub stars",
"href": "https://github.com/nirholas/agenti",
"sourceUrl": "https://github.com/nirholas/agenti",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T11:16:29.013Z",
"isPublic": true
},
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/crewai-nirholas-agenti/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-nirholas-agenti/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to agenti and adjacent AI workflows.