Skip to main content

CryptoAgent AI

Give your AI agent a wallet. Build autonomous agents that send ETH, swap tokens on Uniswap, lend on Aave, and manage portfolios across Ethereum, Base, Arbitrum, and Polygon — all from Python.

PyPI version Python 3.11+ License: MIT


Why CryptoAgent AI?

Most crypto libraries make you wire together providers, signers, nonce managers, gas estimators, and ABI encoders just to send a token. CryptoAgent wraps all of that into one async call.

from sdk import CryptoAgent

async with CryptoAgent("my-wallet", password="pw", chains=["base"]) as agent:
    await agent.send_eth("0xRecipient...", 0.05, chain="base")

Need an AI that can reason about your portfolio and execute transactions autonomously? Plug in your Anthropic API key and the agent gets 19 on-chain tools — balances, swaps, lending, transfers — with built-in safety rails.

response = await agent.prompt("Swap 50 USDC to ETH on Base if gas is under 0.1 gwei")

Who is this for?

Use case How CryptoAgent helps
Airdrop distribution batch_send_eth() — send to hundreds of addresses in one call
Treasury management bots Autonomous agent loop with spending limits and human approval
Portfolio rebalancers AI reasons about allocations, executes swaps and lending
Payment automation send_token("0x...", token="USDC", amount=100) — one line
Multi-agent systems send_to_agent("treasury-wallet", 0.5) — transfer by wallet name
DeFi scripting Uniswap quotes + swaps, Aave supply/borrow, all async

Features

Multi-Chain Support

Ethereum, Base, Arbitrum, and Polygon out of the box. Failover RPC with automatic retry — if one endpoint goes down, the next one picks up.

Chain ID Native Tokens
Ethereum 1 ETH WETH, USDC, USDT, DAI, WBTC
Base 8453 ETH WETH, USDC, USDbC, DAI
Arbitrum 42161 ETH WETH, USDC, USDT, DAI, WBTC, ARB
Polygon 137 MATIC WMATIC, WETH, USDC, USDT, DAI

HD Wallets with Encrypted Key Storage

BIP-44 hierarchical deterministic wallets (m/44'/60'/0'/0/N). Private keys are encrypted at rest using Fernet + PBKDF2 with 600,000 iterations. Keys are decrypted only at signing time and zeroed from memory immediately after.

19 AI Agent Tools

Every tool is registered via a @tool() decorator that auto-generates Claude-compatible JSON Schema. The AI agent can call any of these autonomously:

Category Tools
Blockchain get_balance, get_token_balance, get_gas_price, get_block_number
Wallet get_address, send_eth
DeFi get_swap_quote, swap_tokens, aave_supply, aave_borrow, aave_health_factor
Portfolio get_portfolio, get_pnl
Memory store_note, recall, list_notes
Transfers transfer_to_agent, batch_send, check_agent_balance

Safety-First Design

Transactions pass through a composable safety pipeline before execution:

  1. Rule Engine — rejects transactions above configurable USD thresholds
  2. Spending Limits — per-transaction, hourly, and daily caps tracked in SQLite
  3. Human Approval — high-value transactions pause and ask for confirmation
  4. Slippage Guards — basis-point limits on all swaps
  5. Audit Log — every tool call, every transaction, append-only

Autonomous Agent Loop

The agent runs a continuous Perceive - Reason - Act - Reflect cycle powered by Claude:

Perceive   →  gather balances, events, portfolio state
Reason     →  Claude analyzes context, picks tools
Act        →  execute tools with safety checks
Reflect    →  log results, update portfolio
Sleep      →  configurable interval, then loop

Install

pip install cryptoagent-ai

Requires Python 3.11+.


Quick Start

1. Create a Wallet

cryptoagent wallet create my-wallet -p "strong-password"

This generates a BIP-44 HD wallet, encrypts the private key, and saves it locally. Back up the seed phrase — it's only shown once.

2. Check Balances

# All chains
cryptoagent wallet balance my-wallet

# Specific chain with token balances
cryptoagent wallet balance my-wallet --chain base --tokens

3. Send a Transaction

# Send ETH
cryptoagent wallet send my-wallet 0xRecipient 0.01 --chain base -p "strong-password"

# Send USDC
cryptoagent wallet send my-wallet 0xRecipient 50 --chain base --token USDC -p "strong-password"

4. Start the AI Agent

export ANTHROPIC_API_KEY=sk-ant-...
cryptoagent agent start --wallet my-wallet -p "strong-password"

The agent begins its autonomous loop — monitoring your portfolio, reasoning about market conditions, and executing transactions within your safety limits.


Python SDK

The SDK gives you full programmatic control without the CLI. Every method is async and accepts chain names ("base") or chain IDs (8453).

Basic Operations

import asyncio
from sdk import CryptoAgent

async def main():
    async with CryptoAgent("my-wallet", password="pw", chains=["base", "arbitrum"]) as agent:
        # Properties
        print(agent.address)        # 0x742d35Cc6634C0532925a3b844Bc9e7595f...
        print(agent.wallet_name)    # my-wallet

        # Read operations
        bal = await agent.get_balance("base")               # 1.234 (float ETH)
        usdc = await agent.get_token_balance("base", "USDC") # 500.0 (float USDC)
        gas = await agent.get_gas_price("base")               # 0.001 (float gwei)
        all_bal = await agent.get_all_balances()               # {"base": 1.23, "arbitrum": 0.5}

asyncio.run(main())

Send ETH and Tokens

async with CryptoAgent("my-wallet", password="pw", chains=["base"]) as agent:
    # Send native ETH — amount in human-readable units
    receipt = await agent.send_eth("0xRecipient...", 0.05, chain="base")
    print(receipt.tx_hash)       # 0xabc123...
    print(receipt.success)       # True
    print(receipt.gas_used)      # 21000

    # Send ERC-20 tokens — resolve by symbol
    receipt = await agent.send_token(
        "0xRecipient...",
        token="USDC",
        amount=100.0,
        chain="base",
    )

    # Approve a spender (e.g., Uniswap router)
    receipt = await agent.approve_token("USDC", spender="0xRouter...", chain="base")

Agent-to-Agent Transfers

Send funds between wallets by name — no need to look up addresses:

async with CryptoAgent("treasury", password="pw", chains=["base"]) as agent:
    # Send ETH to another wallet in your keystore
    receipt = await agent.send_to_agent("operations-wallet", 0.5, chain="base")

    # Send tokens to another wallet
    receipt = await agent.send_to_agent("payments-wallet", 1000.0, chain="base", token="USDC")

Batch Transfers

Send to multiple recipients in a single call. Each transfer is sequential; failures don't abort the batch.

async with CryptoAgent("payroll", password="pw", chains=["base"]) as agent:
    # Batch ETH send
    results = await agent.batch_send_eth({
        "0xAlice": 0.1,
        "0xBob": 0.2,
        "0xCharlie": 0.15,
    }, chain="base")

    for r in results:
        if isinstance(r, Exception):
            print(f"Failed: {r}")
        else:
            print(f"Sent: {r.tx_hash}")

    # Batch token send
    results = await agent.batch_send_token({
        "0xAlice": 50.0,
        "0xBob": 100.0,
    }, token="USDC", chain="base")

AI-Powered Prompts

Give the agent a natural-language instruction. It reasons with Claude, calls on-chain tools, and returns a response. Requires ANTHROPIC_API_KEY.

async with CryptoAgent("my-wallet", password="pw", chains=["base"]) as agent:
    # Ask about portfolio
    response = await agent.prompt("What is my current balance and gas price on Base?")
    print(response)

    # Execute a complex action
    response = await agent.prompt(
        "If my USDC balance is above 500, swap half to ETH on Base"
    )
    print(response)

SDK Method Reference

Method Returns Description
agent.address str Wallet address (property)
agent.wallet_name str Wallet name (property)
get_balance(chain) float Native token balance in ETH/MATIC
get_token_balance(chain, token) float ERC-20 balance by symbol or address
get_gas_price(chain) float Gas price in gwei
get_all_balances() dict[str, float] Balances across all configured chains
send_eth(to, amount, chain) TransactionReceipt Send native ETH/MATIC
send_token(to, token, amount, chain) TransactionReceipt Send ERC-20 tokens
send_to_agent(name, amount, chain, token?) TransactionReceipt Send to wallet by name
batch_send_eth(recipients, chain) list Send ETH to multiple addresses
batch_send_token(recipients, token, chain) list Send tokens to multiple addresses
approve_token(token, spender, chain) TransactionReceipt Approve ERC-20 spending
prompt(message) str AI-powered natural language execution
close() None Shut down providers

Architecture

                         CryptoAgent (SDK / CLI)
                                  |
                    +-------------+-------------+
                    |                           |
              Python SDK                   AI Agent Loop
           (direct calls)          (Perceive → Reason → Act → Reflect)
                    |                           |
                    +-------------+-------------+
                                  |
                          +-------+-------+
                          |               |
                    ChainClient      Guardian
                   (read/write)    (safety pipeline)
                          |               |
                  +-------+-------+   RuleEngine
                  |       |       |   SpendingLimits
              Provider  Signer  Nonce  Approval
              (failover) (encrypt) (mgr) AuditLog
                  |
          +-------+-------+-------+
          |       |       |       |
       Ethereum  Base  Arbitrum  Polygon

Package Structure

cryptoagent-ai/
  config/       — Settings, chain configs (YAML), protocol configs
  core/         — Agent loop, Brain (Claude API), tool registry, types, exceptions
  wallet/       — HD derivation, keystore encryption, transaction signing
  chain/        — Multi-chain providers, EIP-1559 builder, nonce manager
  protocols/    — Uniswap V3 quotes + swaps, Aave V3 supply + borrow
  tools/        — 19 registered agent tools (blockchain, DeFi, transfers, memory)
  memory/       — SQLite store, portfolio tracking, audit log
  safety/       — Rule engine, spending limits, approval manager, Guardian
  events/       — Event bus with topic-based pub/sub
  orchestration/ — Multi-agent coordination
  sdk/          — Python SDK (CryptoAgent class, batch helpers)
  cli/          — Typer CLI with Rich output

Configuration

Environment Variables

Variable Description Default
ANTHROPIC_API_KEY Claude API key (required for AI agent) —
WALLET_PASSWORD Default wallet password —
ETH_RPC_URL Override Ethereum RPC Public RPCs
BASE_RPC_URL Override Base RPC Public RPCs
ARBITRUM_RPC_URL Override Arbitrum RPC Public RPCs
POLYGON_RPC_URL Override Polygon RPC Public RPCs
MAX_TX_VALUE_USD Max single transaction value $100
DAILY_SPENDING_LIMIT_USD Daily spending cap $1,000
REQUIRE_HUMAN_APPROVAL_ABOVE_USD Approval threshold $50
LOG_LEVEL Logging verbosity INFO

Chain Configuration

Chains are configured in config/chains.yaml. Each chain specifies RPC endpoints, token addresses, and explorer URLs. Environment variable RPC overrides take priority.


CLI Reference

cryptoagent info                          # Show configuration
cryptoagent gas                           # Gas prices across all chains
cryptoagent gas --chain base              # Gas price on Base

cryptoagent wallet create <name>          # Create HD wallet
cryptoagent wallet list                   # List all wallets
cryptoagent wallet address <name>         # Show wallet address
cryptoagent wallet balance <name>         # Check balances (all chains)
cryptoagent wallet balance <name> -c base --tokens  # Base + ERC-20 balances
cryptoagent wallet send <name> <to> <amount> -c base  # Send ETH

cryptoagent agent start                   # Start autonomous agent
cryptoagent agent start --once            # Run single cycle
cryptoagent agent status                  # Check agent status

cryptoagent tx history <name>             # Transaction history
cryptoagent tx lookup <hash> -c base      # Look up transaction on-chain

Security

CryptoAgent is designed with defense-in-depth:

  • Encrypted keys — Private keys and mnemonics encrypted with Fernet + PBKDF2 (600k iterations). Decrypted only at signing time, zeroed from memory immediately after.
  • Spending limits — Per-transaction, hourly, and daily USD caps. Tracked persistently in SQLite.
  • Human approval — Transactions above a configurable USD threshold require explicit confirmation.
  • Slippage protection — Basis-point limits on all DeFi swaps prevent sandwich attacks.
  • Audit log — Every tool call, every transaction attempt, and every safety decision is logged.
  • Read-only vs. write tools — Safety pipeline applies stricter checks to state-changing operations.

Protocol Fee

A micro-fee of 0.000001 ETH (~$0.0025) is collected per on-chain transaction to support development. The fee is automatically skipped if the wallet balance is too low to cover it. It never blocks your transaction.


Development

git clone https://github.com/coins/cryptoagent-ai.git
cd cryptoagent-ai
pip install -e ".[dev]"

# Run tests
pytest

# Lint
ruff check .

License

MIT

Metadata

Release files for cryptoagent-ai 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cryptoagent-ai 0.3.1
File Size Uploaded Provenance
cryptoagent_ai-0.3.1.tar.gz 57.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for cryptoagent-ai 0.3.1
File Interpreter ABI Platform
cryptoagent_ai-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 136.5 kB

Release files / cryptoagent_ai-0.3.1.tar.gz

Download URL cryptoagent_ai-0.3.1.tar.gz
Size 57.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a7c4e3f1898b8e171f3750b6e5355380ca79afc3ed8d3de4980bc27db347063b
BLAKE2b-256 checksum
How to use checksums
2b29d902203a0066df91bbaedf6bbee37d4960cea5d838c7ccc763d9020e6ed3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.5

Release files / cryptoagent_ai-0.3.1-py3-none-any.whl

Download URL cryptoagent_ai-0.3.1-py3-none-any.whl
Size 78.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
10fb20f8fa47601d2469e26c95921425e03c52a03650ee496aab28ac501bfd82
BLAKE2b-256 checksum
How to use checksums
ffc0447c280665d78591fe89e9a07d2f76af970dad92be32bafa6dd82fce6a8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.5

Security for cryptoagent-ai 0.3.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page