{"id":46527550,"url":"https://github.com/botwallet-co/agent-cli","last_synced_at":"2026-04-02T14:05:08.485Z","repository":{"id":341628560,"uuid":"1170838647","full_name":"botwallet-co/agent-cli","owner":"botwallet-co","description":"Dedicated CLI for AI agents to earn, pay, and participate in the AI economy. Access x402 paid APIs, create invoices to receive funds, request funds from human owners, and send or receive payments in USDC — all with built-in owner approvals, spending guardrails, and FROST threshold signing on Solana.","archived":false,"fork":false,"pushed_at":"2026-03-22T08:44:59.000Z","size":270,"stargazers_count":1,"open_issues_count":7,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-22T23:12:41.231Z","etag":null,"topics":["agents","agentskills","ai","ai-agents","cli","developer-tools","open-source","payments","solana","usdc","wallet","x402"],"latest_commit_sha":null,"homepage":"https://botwallet.co","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/botwallet-co.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-02T15:24:14.000Z","updated_at":"2026-03-22T08:45:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/botwallet-co/agent-cli","commit_stats":null,"previous_names":["botwallet-co/agent-cli"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/botwallet-co/agent-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/botwallet-co%2Fagent-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/botwallet-co%2Fagent-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/botwallet-co%2Fagent-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/botwallet-co%2Fagent-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/botwallet-co","download_url":"https://codeload.github.com/botwallet-co/agent-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/botwallet-co%2Fagent-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31307482,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agents","agentskills","ai","ai-agents","cli","developer-tools","open-source","payments","solana","usdc","wallet","x402"],"created_at":"2026-03-06T21:09:34.328Z","updated_at":"2026-04-02T14:05:08.473Z","avatar_url":"https://github.com/botwallet-co.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# BotWallet CLI\n\n**Your AI has a brain. Give it a wallet.**\n\n[![npm](https://img.shields.io/npm/v/@botwallet/agent-cli?color=blue\u0026label=npm)](https://www.npmjs.com/package/@botwallet/agent-cli)\n[![License](https://img.shields.io/badge/license-Apache%202.0-green)](LICENSE)\n[![GitHub stars](https://img.shields.io/github/stars/botwallet-co/agent-cli?style=social)](https://github.com/botwallet-co/agent-cli)\n\nThe CLI that lets AI agents hold, spend, and earn real money (USDC on Solana).\n\n[Website](https://botwallet.co) · [Dashboard](https://app.botwallet.co) · [Docs](https://docs.botwallet.co) · [npm](https://www.npmjs.com/package/@botwallet/agent-cli)\n\n\u003c/div\u003e\n\n---\n\nThree commands. Your agent has a wallet with spending limits, human oversight, and FROST threshold signing.\n\n```bash\nnpm install -g @botwallet/agent-cli\nbotwallet register --name \"My Agent Wallet\" --owner you@email.com\nbotwallet paylink create 25.00 --desc \"Research report\"  # Your agent just created an invoice\n```\n\n**What agents can do with BotWallet:**\n- **Pay** other agents and merchants — `botwallet pay @recipient 10.00`\n- **Earn** money via invoices and paylinks — `botwallet paylink create`\n- **Access paid APIs** through x402 — `botwallet x402 fetch \u003curl\u003e`\n- **Request funds** from their human owner — `botwallet fund 50.00`\n- **Withdraw** USDC to any Solana address — `botwallet withdraw`\n\nEvery transaction is FROST 2-of-2 threshold signed (agent + server). The full private key never exists anywhere. Human owners set guard rails — per-transaction limits, daily caps, merchant allowlists — and approve anything outside the rules.\n\n## Installation\n\n```bash\n# npm (recommended)\nnpm install -g @botwallet/agent-cli\n\n# Linux/macOS\ncurl -fsSL https://botwallet.co/install.sh | bash\n\n# Windows (PowerShell)\niwr https://botwallet.co/install.ps1 | iex\n\n# From source\ngo install github.com/botwallet-co/agent-cli@latest\n```\n\n## Quick Start\n\n```bash\n# Create a wallet (FROST threshold key generation, saves credentials locally)\nbotwallet register --name \"Orion's Wallet\" --owner \"your@email.com\"\n\n# Create an invoice and send it\nbotwallet paylink create 25.00 --desc \"Research report\"\nbotwallet paylink send \u003crequest_id\u003e --to client@example.com --message \"Here's your invoice\"\n\n# Two-step payment flow\nbotwallet pay @merchant 10.00                # Step 1: Create intent\nbotwallet pay confirm \u003ctransaction_id\u003e       # Step 2: FROST sign \u0026 submit\n```\n\n`register` is the recommended way to create a wallet. `wallet create` does the same thing.\n\n## Command Groups\n\n### Wallet (`botwallet wallet ...`)\n| Command | Description |\n|---------|-------------|\n| `wallet create --name \"...\" --owner email` | Create wallet (FROST key generation) |\n| `wallet info` | Wallet info and claim status |\n| `wallet balance` | Balance and spending limits |\n| `wallet list` | List locally stored wallets |\n| `wallet use \u003cname\u003e` | Switch default wallet |\n| `wallet deposit` | Solana USDC deposit address |\n| `wallet owner \u003cemail\u003e` | Update pledged owner (unclaimed only) |\n| `wallet rename \u003cname\u003e` | Rename display name (username unchanged) |\n| `wallet backup` | Back up Key 1 (two-step safety process) |\n| `wallet export -o file.bwlt` | Export wallet to encrypted .bwlt file |\n| `wallet import file.bwlt` | Import wallet from .bwlt file |\n\n### Payments (`botwallet pay ...`) — Two-Step\n| Command | Description |\n|---------|-------------|\n| `pay @recipient \u003camount\u003e` | **Step 1:** Create payment intent |\n| `pay confirm \u003ctx_id\u003e` | **Step 2:** FROST sign \u0026 submit |\n| `pay preview @to \u003camount\u003e` | Pre-check if payment will succeed |\n| `pay list` | List payments |\n| `pay cancel \u003ctx_id\u003e` | Cancel a pending payment |\n| `pay --paylink \u003cid\u003e` | Pay a payment link directly |\n\nFlags: `--note`, `--reference`, `--paylink`, `--idempotency-key`\n\n### Payment Links — Earning (`botwallet paylink ...`)\n| Command | Description |\n|---------|-------------|\n| `paylink create [amount] --desc \"...\"` | Create payment link to get paid |\n| `paylink send \u003cid\u003e --to \u003cemail\\|@bot\u003e` | Send paylink to email or bot's inbox |\n| `paylink get \u003cid\u003e` | Check if paid |\n| `paylink get --reference \u003cref\u003e` | Look up by your reference ID |\n| `paylink list` | List paylinks |\n| `paylink cancel \u003cid\u003e` | Cancel paylink |\n\nCreate flags: `--desc` (required), `--item` (repeatable), `--expires`, `--reference`, `--revealOwner`\nSend flags: `--to` (required, email or @bot-username), `--message` (optional note)\n\n`--item` format — repeat for each line item, total auto-calculated:\n```\n--item \"API Calls, 5.00, 2\" --item \"Setup Fee, 10.00\"\n```\n\n### Fund Requests (`botwallet fund ...`)\n| Command | Description |\n|---------|-------------|\n| `fund \u003camount\u003e --reason \"...\"` | Request funds from owner |\n| `fund ask \u003camount\u003e --reason \"...\"` | Same as above (explicit subcommand) |\n| `fund list` | List fund requests |\n\n### Withdrawals (`botwallet withdraw ...`) — Two-Step\n| Command | Description |\n|---------|-------------|\n| `withdraw \u003camount\u003e \u003caddr\u003e --reason \"...\"` | **Step 1:** Create request (owner must approve) |\n| `withdraw confirm \u003cid\u003e` | **Step 2:** FROST sign \u0026 submit |\n| `withdraw get \u003cid\u003e` | Check withdrawal status |\n\n### Approval Status (`botwallet approval ...`)\n| Command | Description |\n|---------|-------------|\n| `approval status \u003capproval_id\u003e` | Check status of a specific approval (pending/approved/rejected/expired) |\n\nUse this to poll after any action returns `awaiting_approval`. When status is `approved`, run the corresponding confirm command.\n\n### Events \u0026 Notifications (`botwallet events`)\n| Command | Description |\n|---------|-------------|\n| `events` | Check unread notifications |\n| `events --type approval_resolved` | Filter by event type |\n| `events --all` | Include already-read events |\n| `events --limit 25` | Max events to return (default: 10) |\n| `events --since \u003cISO-timestamp\u003e` | Only events after this time |\n| `events --mark-read` | Mark all as read |\n\nEvent types: `approval_resolved`, `deposit_received`, `payment_completed`, `fund_requested`, `fund_request_funded`, `wallet_pledged`, `guardrails_updated`, `x402_payment_completed`, `x402_payment_failed`\n\n`notifications` is an alias for `events`.\n\n### x402 Paid APIs (`botwallet x402 ...`) — Two-Step\n| Command | Description |\n|---------|-------------|\n| `x402 discover` | List verified Solana APIs (curated catalog) |\n| `x402 discover \"query\"` | Search catalog by keyword |\n| `x402 discover --bazaar` | Search the full x402 Bazaar (Coinbase CDP) |\n| `x402 discover --bazaar --all` | Bazaar: include all networks (default: Solana only) |\n| `x402 fetch \u003curl\u003e` | **Step 1:** Probe API, see price |\n| `x402 fetch confirm \u003cfetch_id\u003e` | **Step 2:** Pay and retrieve data |\n\nDiscover flags: `--bazaar`, `--limit` (bazaar), `--offset` (bazaar), `--all` (bazaar), `--facilitator`\nFetch flags: `--method`, `--body`, `--header` (repeatable)\n\n### Utilities\n| Command | Description |\n|---------|-------------|\n| `history` | Transaction history (`--type in/out/payment/deposit/withdrawal`) |\n| `limits` | Spending limits and guard rails |\n| `approvals` | List all pending owner approvals |\n| `approval status \u003cid\u003e` | Check a specific approval's status |\n| `lookup @username` | Check if recipient exists |\n| `ping` | Test API connectivity |\n| `version` | Print version information |\n| `docs` | Full embedded documentation |\n\n`transactions` is an alias for `history`.\n\n## Authentication\n\nCredentials auto-saved on `wallet create`. Priority order:\n\n1. `--api-key` flag\n2. `BOTWALLET_API_KEY` / `BW_API_KEY` env var\n3. `--wallet` flag (selects from config)\n4. Default wallet from `~/.botwallet/config.json`\n\n## Output Modes\n\n**JSON (default)** — for bots:\n```bash\n$ botwallet wallet balance\n{\"balance\": 42.50, \"daily_limit\": 500.00, \"spent_today\": 10.00, \"remaining_today\": 490.00}\n```\n\n**Human** (`--human` flag) — formatted with colors:\n```bash\n$ botwallet wallet balance --human\n── Balance ────────────────────\n  Available: $42.50\n── Daily Spending ─────────────\n  Spent Today: $10.00 / $500.00\n```\n\n## Examples\n\n```bash\n# Pay someone\nbotwallet pay preview @openai 25.00\nbotwallet pay @openai 25.00 --note \"API credits\"\nbotwallet pay confirm \u003ctransaction_id\u003e\n\n# Earn money (simple)\nbotwallet paylink create 50.00 --desc \"Research report\"\n\n# Earn money (itemized invoice — total auto-calculated)\nbotwallet paylink create --desc \"Dev services\" --item \"API Calls, 5.00, 2\" --item \"Setup Fee, 10.00\"\nbotwallet paylink send \u003cid\u003e --to client@example.com --message \"Here's your invoice\"\nbotwallet paylink send \u003cid\u003e --to @data-bot --message \"Payment for data analysis\"\n\n# Request funds\nbotwallet fund 50.00 --reason \"API costs\"\n\n# Withdraw\nbotwallet withdraw 100.00 YourSolanaAddr... --reason \"Monthly earnings\"\n# Owner approves, then:\nbotwallet withdraw confirm \u003cwithdrawal_id\u003e\n\n# Wait for human approval (using approval status polling)\nbotwallet pay @merchant 500.00                  # Returns awaiting_approval + approval_id\nbotwallet approval status \u003capproval_id\u003e         # Poll: pending → approved\nbotwallet pay confirm \u003ctransaction_id\u003e          # After approved\n\n# Discover and use paid APIs\nbotwallet x402 discover                             # List verified Solana APIs\nbotwallet x402 discover \"speech\"                    # Search by keyword\nbotwallet x402 fetch \u003curl_from_results\u003e             # Probe, see price\nbotwallet x402 fetch confirm \u003cfetch_id\u003e             # Pay and get data\n\n# Multiple wallets\nbotwallet wallet list\nbotwallet wallet use my-other-wallet\n```\n\n## How It Works\n\nBotWallet uses **FROST (Flexible Round-Optimized Schnorr Threshold) 2-of-2 signatures**. During wallet creation, a Distributed Key Generation ceremony produces two key shares:\n\n- **S1** (agent's share): stored locally at `~/.botwallet/seeds/\u003cwallet\u003e.seed`\n- **S2** (server's share): held by BotWallet, never sent to the agent\n\nThe full private key never exists anywhere. Every transaction requires both parties to produce partial signatures that combine into a valid Ed25519 signature. Neither the agent nor BotWallet can move funds alone.\n\nAll payments settle in **USDC on Solana** — a dollar-pegged stablecoin. `10.00` = $10.00.\n\n## Building from Source\n\n```bash\nmake build          # Current platform\nmake build-all      # All platforms\nmake test           # Run tests\n```\n\n## Links\n\n- **Website**: [botwallet.co](https://botwallet.co)\n- **Human Dashboard**: [app.botwallet.co](https://app.botwallet.co)\n- **Documentation**: [docs.botwallet.co](https://docs.botwallet.co)\n- **npm**: [@botwallet/agent-cli](https://www.npmjs.com/package/@botwallet/agent-cli)\n\n## License\n\nApache 2.0 — See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbotwallet-co%2Fagent-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbotwallet-co%2Fagent-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbotwallet-co%2Fagent-cli/lists"}