Python SDK for Axon — treasury and payment infrastructure for autonomous AI agents
Project description
axonfi
Python SDK for Axon — treasury and payment infrastructure for autonomous AI agents.
Axon lets bot operators deploy non-custodial vaults, register bot public keys, define spending policies, and let their bots make gasless payments — without bots ever touching private keys or gas.
Installation
pip install axonfi
Quick Start
Option 1: Keystore file + passphrase (recommended)
When you register a bot on the Axon dashboard, it generates a keystore JSON file. This is the safest way to load a bot key — the private key stays encrypted on disk and only lives in memory while the bot runs.
import json
from eth_account import Account
from axonfi import AxonClient, Chain, Token
# Load encrypted keystore file (downloaded from the dashboard)
with open("bot-keystore.json") as f:
keystore = json.load(f)
# Decrypt with your passphrase (set when you registered the bot)
private_key = Account.decrypt(keystore, "your-passphrase")
client = AxonClient(
vault_address="0x...",
chain_id=Chain.BaseSepolia,
bot_private_key="0x" + private_key.hex(),
)
# Pay 5 USDC — SDK handles decimals automatically
result = await client.pay(
to="0x...recipient...",
token=Token.USDC,
amount=5,
memo="API call #1234 — weather data",
)
print(result.status, result.tx_hash)
Option 2: Raw private key (for quick testing)
from axonfi import AxonClient, Chain
client = AxonClient(
vault_address="0x...",
chain_id=Chain.BaseSepolia,
bot_private_key="0x...", # From env var or .env file — never hardcode
)
result = await client.pay(to="0x...", token=Token.USDC, amount=5)
Synchronous Usage (LangChain, CrewAI)
Both options work with the sync client too — just swap AxonClient for AxonClientSync:
from axonfi import AxonClientSync, Chain, Token
client = AxonClientSync(
vault_address="0x...",
chain_id=Chain.BaseSepolia,
bot_private_key="0x...",
)
result = client.pay(to="0x...", token=Token.USDC, amount=5)
Features
- EIP-712 signing for all intent types (payment, execute, swap)
- Async + sync clients — use
AxonClient(async) orAxonClientSync - Human-friendly amounts — pass
5or"5.2"instead of5000000 - Token registry — use
"USDC"orToken.USDCinstead of addresses - Full relayer API — pay, execute DeFi protocols, swap, poll, check balances
API Reference
AxonClient / AxonClientSync
| Method | Description |
|---|---|
pay(to, token, amount, ...) |
Create, sign, and submit a payment |
execute(protocol, call_data, token, amount, ...) |
DeFi protocol interaction |
swap(to_token, min_to_amount, ...) |
In-vault token swap |
get_balance(token) |
Vault balance for a token |
get_balances(tokens) |
Multiple balances in one call |
is_active() |
Whether this bot is active |
is_paused() |
Whether the vault is paused |
get_vault_info() |
Owner, operator, paused, version |
can_pay_to(destination) |
Destination whitelist/blacklist check |
poll(request_id) |
Poll async payment status |
Signing Utilities
from axonfi import sign_payment, encode_ref, PaymentIntent
ref = encode_ref("my memo")
intent = PaymentIntent(bot="0x...", to="0x...", token="0x...", amount=1000000, deadline=1700000000, ref=ref)
signature = sign_payment(private_key, vault_address, chain_id, intent)
Constants
from axonfi import Chain, USDC, Token, KNOWN_TOKENS
chain_id = Chain.BaseSepolia # 84532
usdc_addr = USDC[chain_id] # 0x036CbD...
decimals = KNOWN_TOKENS["USDC"].decimals # 6
Supported Chains
| Chain | ID | Status |
|---|---|---|
| Base | 8453 | Mainnet |
| Base Sepolia | 84532 | Testnet |
| Arbitrum One | 42161 | Mainnet |
| Arbitrum Sepolia | 421614 | Testnet |
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file axonfi-0.1.5.tar.gz.
File metadata
- Download URL: axonfi-0.1.5.tar.gz
- Upload date:
- Size: 16.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d9febe6bdebaf0ba9165cca6cb0a5e1640956b187f02114287378deb73a91a1
|
|
| MD5 |
369c78a84ab222a70ba0b9e505e7930b
|
|
| BLAKE2b-256 |
26909998dbe92eb91446386795a05ac138ab959c3a65f9a1b0323a0f43e61021
|
File details
Details for the file axonfi-0.1.5-py3-none-any.whl.
File metadata
- Download URL: axonfi-0.1.5-py3-none-any.whl
- Upload date:
- Size: 17.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd6f109d8f670f2a84db8c663e3cbf9b618f6acab04bc57933218a3c59c0f1e4
|
|
| MD5 |
b1ba83aeeb086cd9edd931725d81a95e
|
|
| BLAKE2b-256 |
cdd2fd26335701bc32420841e29d07c3e352ede9911bf0c5058927cecb084bd9
|