Agent-ready Solana wallet system. Zero passwords, instant signing, local server. Built for autonomous agents that need frictionless Solana transactions.
Install
npx skillscat add willmcdeezy/fuego Install via the SkillsCat registry.
Fuego: The Agent-Ready Solana Wallet ๐ฅ
The first Solana wallet designed FOR autonomous agents. Zero passwords, zero friction, maximum autonomy.
Why Fuego Exists
Traditional Solana wallets break agent workflows:
- โ Password prompts block automation
- โ Browser extensions don't work headlessly
- โ Private key exposure to third parties
- โ Slow multi-step processes waste compute time
Fuego fixes everything:
- โ Zero passwords - No human intervention required
- โ Instant signing - Millisecond transaction processing
- โ Local-first - Keys never leave your machine
- โ REST API - Standard HTTP endpoints
- โ Agent-optimized - Built for 24/7 autonomous operation
๐จ CRITICAL FOR AGENTS: Use The CLI! ๐จ
If you're an autonomous agent, DO NOT reinvent transaction flows. Use this:
fuego send <recipient> <amount> --token USDC --yesThis single command:
- โ Builds transaction with fresh blockhash
- โ Signs locally (zero network key exposure)
- โ Submits to chain with proper error handling
- โ Returns signature + explorer link
- โ Supports address book contacts
- โ
Works with SOL, USDC, USDT via
--tokenflag
๐ฅ This is THE agent-first approach. Everything else is secondary.
๐ Quick Start (5 Minutes)
1. Install fuego-cli
npm install -g fuego-cli2. Create Wallet (Password-Free!)
# Create agent-ready wallet (no password required!)
fuego create
# Output:
# โ
Address: DmFyLRiJtc4Bz75hjAqPaEJpDfRe4GEnRLPwc3EgeUZF
# ๐ Wallet config: ~/.fuego/wallet-config.json
# ๐พ Backup: ~/.config/solana/fuego-backup.json3. Install Fuego Project
# For OpenClaw agents (auto-detects ~/.openclaw/workspace)
fuego install
# For manual/Cursor/Claude Code installs (specify path)
fuego install --path ~/projects/fuego4. Start Server
fuego serve
# Output:
# ๐ฅ Fuego server running on http://127.0.0.1:80805. Show Address to Human
fuego address
# Output:
# ๐ Your Fuego Address
# Name: default
# Public Key: DmFy...eUZF๐ก For humans: Share this address so they can fund the wallet. They can send SOL from any Solana wallet (Phantom, Solflare, etc.).
6. Fund the Wallet
Option A: MoonPay (for fiat โ crypto)
- Visit: https://buy.moonpay.com/?currency=SOL&address=YOUR_ADDRESS
- Minimum: ~$30 USD
- Instant to wallet
Option B: Manual transfer
- Human copies address from above
- Sends SOL from their wallet to your Fuego address
- SOL needed for transaction fees (0.001 SOL per tx)
7. Open Dashboard (Optional - Human View)
fuego dashboard
# Opens dashboard.html in default browser
# Shows: balances, transaction history, real-time updatesDashboard Features:
- ๐ฐ Real-time balances (SOL, USDC, USDT) with USD values
- ๐ Transaction history - All transactions with Fuego-styled entries
- ๐ One-click refresh - No page reloads needed
- ๐ Dark/Light themes - Automatic system detection
- ๐ Explorer links - Direct to Solana Explorer
๐ Send Transactions - THE AGENT WAY
โก This is THE recommended approach for all autonomous agents:
# Perfect agent workflow - zero interaction, instant execution!
fuego send GvCoHGGBR97Yphzc6SrRycZyS31oUYBM8m9hLRtJT7r5 0.25 --token USDC --yes
# Output:
# ๐ Transaction Preview
# From: DmFy...eUZF
# To: GvCo...T7r5
# Amount: 0.25 USDC
#
# โณ Executing transaction via Fuego...
# ๐ฅ Fuego Agent Transaction Signer - Agent-Ready Edition
# ๐ Loading wallet from ~/.fuego/wallet.json...
# โ
Wallet loaded successfully
# ๐ Building unsigned transaction...
# โ
Transaction built
# ๐ Signing transaction (no password required)...
# โ
Transaction signed instantly
# ๐ค Submitting signed transaction...
# โ
Transaction submitted!
#
# Signature: 4iygcnVHCJevxpHBFP36eLBQ4pQRzH5qJB5NGhfjTnndBPau6p...
# Explorer: https://explorer.solana.com/tx/4iygcn...
#
# ๐ Transaction on-chain! Agent-ready speed achieved! ๐ฎWhy this is PERFECT for agents:
- โ Zero human interaction - No prompts, no waiting (with --yes flag)
- โ Professional CLI interface - Clean arguments and validation
- โ
Multi-token support - SOL, USDC, USDT with
--tokenflag - โ Address book integration - Send to named contacts
- โ Complete status reporting - Preview โ Build โ Sign โ Submit workflow
- โ Explorer link generation - Instant verification
- โ Error handling - Clear failure messages for debugging
๐๏ธ Agent-Ready Architecture
๐ค Agent/Script
โ POST /build-transfer-sol
๐ฅ Fuego Server (localhost:8080)
โข Builds unsigned transaction with fresh blockhash
โข Returns base64-encoded transaction + memo
โ Unsigned Transaction
๐ค Agent/Script
โข Loads ~/.fuego/wallet.json (simple JSON, no password!)
โข Signs transaction locally with solders/web3.js
โ Signed Transaction
๐ฅ Fuego Server (localhost:8080)
โข POST /submit-transaction
โข Broadcasts to Solana mainnet
โ On-chain
๐ Solana Network๐ Security Model:
- โ Private keys never leave your machine (client-side signing)
- โ File permissions provide real security (chmod 600)
- โ No network key exposure (localhost-only server)
- โ Standard Solana format (compatible with CLI tools)
๐ก Complete API Reference
Core Endpoints
GET /wallet-address
Get the local wallet address dynamically.
curl http://127.0.0.1:8080/wallet-addressResponse:
{
"success": true,
"data": {
"address": "DmFyLRiJtc4Bz75hjAqPaEJpDfRe4GEnRLPwc3EgeUZF",
"network": "mainnet-beta",
"source": "wallet"
}
}POST /balance - Check SOL Balance
curl -X POST http://127.0.0.1:8080/balance \\
-H "Content-Type: application/json" \\
-d '{"network": "mainnet-beta", "address": "YOUR_ADDRESS"}'Response:
{
"success": true,
"data": {
"sol": 1.234567890,
"lamports": 1234567890,
"network": "mainnet-beta"
}
}POST /usdc-balance - Check USDC Balance
curl -X POST http://127.0.0.1:8080/usdc-balance \\
-H "Content-Type: application/json" \\
-d '{"network": "mainnet-beta", "address": "YOUR_ADDRESS"}'Response:
{
"success": true,
"data": {
"usdc": 150.250000,
"raw_amount": "150250000",
"network": "mainnet-beta"
}
}POST /usdt-balance - Check USDT Balance
curl -X POST http://127.0.0.1:8080/usdt-balance \\
-H "Content-Type: application/json" \\
-d '{"network": "mainnet-beta", "address": "YOUR_ADDRESS"}'Response:
{
"success": true,
"data": {
"usdt": 75.500000,
"raw_amount": "75500000",
"network": "mainnet-beta"
}
}Transaction Building Endpoints
POST /build-transfer-sol - Build SOL Transfer
curl -X POST http://127.0.0.1:8080/build-transfer-sol \\
-H "Content-Type: application/json" \\
-d '{
"network": "mainnet-beta",
"from_address": "YOUR_ADDRESS",
"to_address": "RECIPIENT_ADDRESS",
"amount": "0.001",
"yid": "agent-transfer-123"
}'Response:
{
"success": true,
"data": {
"transaction": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEDAb...",
"blockhash": "J7rBdM33dHKtJwjp...AbCdEfGhIjKl",
"memo": "fuego|SOL|f:YOUR_ADDRESS|t:RECIPIENT|a:1000000|yid:agent-transfer-123|n:",
"network": "mainnet-beta"
}
}POST /build-transfer-usdc - Build USDC Transfer
curl -X POST http://127.0.0.1:8080/build-transfer-usdc \\
-H "Content-Type: application/json" \\
-d '{
"network": "mainnet-beta",
"from_address": "YOUR_ADDRESS",
"to_address": "RECIPIENT_ADDRESS",
"amount": "10.50",
"yid": "agent-usdc-456"
}'POST /build-transfer-usdt - Build USDT Transfer
curl -X POST http://127.0.0.1:8080/build-transfer-usdt \\
-H "Content-Type: application/json" \\
-d '{
"network": "mainnet-beta",
"from_address": "YOUR_ADDRESS",
"to_address": "RECIPIENT_ADDRESS",
"amount": "25.75",
"yid": "agent-usdt-789"
}'POST /submit-transaction - Broadcast Signed Transaction
curl -X POST http://127.0.0.1:8080/submit-transaction \\
-H "Content-Type: application/json" \\
-d '{
"network": "mainnet-beta",
"transaction": "BASE64_SIGNED_TRANSACTION"
}'Response:
{
"success": true,
"data": {
"signature": "5J7XzY...9KpQrS",
"explorer_link": "https://explorer.solana.com/tx/5J7XzY...9KpQrS?cluster=mainnet-beta"
}
}History Endpoints
POST /all-transactions - Get All Transactions
curl -X POST http://127.0.0.1:8080/all-transactions \\
-H "Content-Type: application/json" \\
-d '{
"network": "mainnet-beta",
"address": "YOUR_ADDRESS",
"limit": 20
}'Returns all wallet transactions. Fuego transactions (those with fuego| in the memo) are styled with rich details (token icon, amount, from/to, ๐ฅ Sent/Received badge) in the dashboard. Regular transactions show simplified styling.
๐ค Agent Integration Patterns
๐ For Agents Writing Code (Node.js, etc.)
Just call the CLI via subprocess. That's it.
The CLI handles everything: building, signing, submitting, error handling. Don't wrap it in a class โ just use it directly.
Node.js/TypeScript:
import { execSync } from 'child_process';
// Send payment
const result = execSync(
'fuego send GvCo... 0.25 --token USDC --yes',
{ encoding: 'utf-8' }
);
console.log(result);Why this is perfect:
- โ Zero abstraction โ CLI does everything
- โ Works in any language โ bash, Python, Node, Go, whatever
- โ Easy to debug โ run the same command manually
- โ Always up to date โ CLI updates, your code doesn't change
๐ ๏ธ Alternative: Raw API Integration (Not Recommended)
If you absolutely must use raw API calls instead of the CLI:
๐ ๏ธ Alternative: Raw API Integration (Not Recommended)
If you absolutely must use raw API calls instead of the CLI:
๐ฐ Agent Deposit Integration
Recommended Agent UX Pattern
When a user asks to deposit funds, follow this pattern for optimal UX:
โ Bad (cluttered message):
Your wallet address is DmFyLRiJtc4Bz75hjAqPaEJpDfRe4GEnRLPwc3EgeUZF. You can deposit using MoonPay at https://buy.moonpay.com/... or send directly from another wallet.โ Good (clean separation):
Message 1 (address only):
DmFyLRiJtc4Bz75hjAqPaEJpDfRe4GEnRLPwc3EgeUZFMessage 2 (options):
๐ฐ Deposit options:
1๏ธโฃ **MoonPay** (fastest - 1-5 min)
Credit card, Apple Pay, Google Pay
https://buy.moonpay.com/?currencyCode=sol&walletAddress=DmFyLRiJtc4Bz75hjAqPaEJpDfRe4GEnRLPwc3EgeUZF
2๏ธโฃ **Direct transfer**
Send SOL/USDC/USDT from any wallet
3๏ธโฃ **Exchange withdraw**
Coinbase, Kraken, Binance โ Solana
๐ Check balance: Open dashboard/dashboard.htmlWhy this works:
- User can easily copy address without selecting other text
- Options are clearly presented without cluttering the address
- Links work correctly without being split
Deposit Flow Implementation
def handle_deposit_request(self):
"""Handle user deposit request with clean UX"""
# Get current wallet address
address = self.get_wallet_address()
# Send address alone first (easy copy/paste)
self.send_message(address)
# Then send options in separate message
options = f"""๐ฐ Deposit options:
1๏ธโฃ **MoonPay** (fastest - 1-5 min)
https://buy.moonpay.com/?currencyCode=sol&walletAddress={address}
2๏ธโฃ **Direct transfer**
Send SOL/USDC/USDT from any wallet
3๏ธโฃ **Exchange withdraw**
Coinbase, Kraken โ Solana
๐ Check balance in dashboard"""
self.send_message(options)๐ Security Best Practices
What Makes Fuego Secure
File Permissions = Real Security
# Wallet files are chmod 600 (user read/write only) ls -la ~/.fuego/wallet.json # -rw------- 1 user user 658 Feb 18 15:01 wallet.jsonClient-Side Signing
โ Private keys never sent over network โ Signing happens locally โ Server only sees signed transactions (public data)Localhost-Only Server
โ Server binds to 127.0.0.1 (local only) โ No external network exposure โ No firewall configuration neededStandard Format Compatibility
# Compatible with Solana CLI tools solana-keygen pubkey ~/.fuego/wallet.json # โ Works solana balance ~/.fuego/wallet.json # โ Works
Agent Security Checklist
- โ
Keep
~/.fuego/wallet.jsonsecure (it's your private key!) - โ Don't commit wallet files to version control
- โ Only run server on localhost (default behavior)
- โ
Regularly backup
~/.config/solana/fuego-backup.json - โ Verify transactions on Solana Explorer
- โ Monitor wallet balance regularly
- โ Use strong system-level user isolation
What We Eliminated (Security Theater)
- โ Password prompts - File permissions provide real security
- โ Encryption complexity - Standard tools can't read encrypted files
- โ Network key exposure - Client-side signing prevents this
- โ Browser dependencies - Pure REST API is more secure
- โ Third-party key storage - Your machine = your keys
๐ ๏ธ Development & Customization
Project Structure
fuego/
โโโ README.md # Main documentation
โโโ SKILL.md # This file (agent integration guide)
โโโ package.json # Dependencies for scripts
โโโ scripts/ # Agent-ready transaction scripts
โ โโโ fuego_transfer.mjs # Main transaction tool
โ โโโ x402_purch.mjs # x402 payment handler
โโโ server/ # Rust HTTP server
โ โโโ Cargo.toml # Rust dependencies
โ โโโ src/
โ โโโ main.rs # Server implementation
โ โโโ utils/ # Server utilities
โโโ dashboard/ # Zero-dependency dashboard
โโโ dashboard.html # Main dashboard (open in browser)
โโโ README.md # Dashboard documentation
โโโ tokens/ # Token SVG icons
โ โโโ solanaLogoMark.svg
โ โโโ usdc.svg
โ โโโ usdt.svg
โโโ fuego-logo.jpg # Dashboard logoPrerequisites
- fuego-cli - Wallet creation and management (requires Node.js)
- Rust (1.85+) - Required for server
- Node.js (18+) - For transaction scripts
Building from Source
Option A: Using fuego-cli (Recommended)
# 1. Install CLI
npm install -g fuego-cli
# 2. Clone repository
git clone https://github.com/willmcdeezy/fuego.git
cd fuego
# 3. Create wallet
fuego create
# 4. Start server (auto-builds with cargo)
fuego serveOption B: Manual Build
# 1. Clone repository
git clone https://github.com/willmcdeezy/fuego.git
cd fuego
# 2. Build Rust server manually
cd server && cargo build
# 3. Run server
./target/debug/fuego-serverCustomizing for Your Agents
Environment Variables:
# Wallet location (default: ~/.fuego/wallet.json)
export FUEGO_WALLET=/path/to/custom/wallet.json
# Server URL (default: http://127.0.0.1:8080)
export FUEGO_SERVER=http://127.0.0.1:9000Custom Server Port:
# Modify server/src/main.rs
let addr = SocketAddr::from(([127, 0, 0, 1], 9000)); // Change portCustom Token Support:
// Add to server/src/main.rs
const PYUSD_MINT: &str = "2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo";
// Then implement /pyusd-balance and /build-transfer-pyusd endpoints๐ Production Deployment
Agent Server Setup
# 1. Create dedicated agent user
sudo useradd -m -s /bin/bash fuego-agent
# 2. Install fuego-cli (requires Node.js)
sudo -u fuego-agent npm install -g fuego-cli
# 3. Clone Fuego server
sudo -u fuego-agent git clone https://github.com/willmcdeezy/fuego.git /home/fuego-agent/fuego
# 4. Create wallet and install project
sudo -u fuego-agent fuego create
sudo -u fuego-agent fuego install --path /home/fuego-agent/fuego
# 5. Create systemd service
sudo tee /etc/systemd/system/fuego.service << EOF
[Unit]
Description=Fuego Solana Wallet Server
After=network.target
[Service]
Type=simple
User=fuego-agent
WorkingDirectory=/home/fuego-agent/fuego/server
ExecStart=/usr/bin/fuego serve
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
# 6. Start service
sudo systemctl daemon-reload
sudo systemctl enable fuego
sudo systemctl start fuego
# 7. Verify
curl http://127.0.0.1:8080/wallet-address[Install]
WantedBy=multi-user.target
EOF
6. Start service
sudo systemctl daemon-reload
sudo systemctl enable fuego
sudo systemctl start fuego
7. Verify
curl http://127.0.0.1:8080/wallet-address
### Production Checklist
- โ
**Dedicated user account** for isolation
- โ
**Systemd service** for auto-restart
- โ
**Regular backups** of wallet files
- โ
**Log monitoring** for transaction errors
- โ
**Balance alerts** for low funds
- โ
**Network monitoring** for RPC health
- โ
**Security updates** for system packages
---
## ๐ Troubleshooting
### Common Agent Issues
**Problem: "Wallet not initialized" error**
```bash
# Solution: Create wallet with fuego-cli
fuego createProblem: "Server not running" error
# Solution: Start server
fuego serveProblem: "Connection refused" error
# Check if server is running
curl http://127.0.0.1:8080/health
# If not running, start it
fuego serveProblem: "Fuego server not found" error
# Solution: Install the fuego project
fuego installProblem: "Transaction simulation failed" error
# Usual cause: Insufficient balance
# Check balance first
curl -X POST http://127.0.0.1:8080/balance \
-H "Content-Type: application/json" \
-d '{"network": "mainnet-beta", "address": "YOUR_ADDRESS"}'Problem: "Invalid signature" error
# Wallet file might be corrupted
# Restore from backup
cp ~/.config/solana/fuego-backup.json ~/.fuego/wallet.jsonDebug Mode
Enable verbose logging:
# Server logs
RUST_LOG=debug ./target/release/fuego-serverPerformance Tuning
Faster RPC endpoint:
// In server/src/main.rs, use premium RPC
let rpc_url = "https://solana-api.projectserum.com"; // Faster
// or
let rpc_url = "https://rpc.helius.xyz/?api-key=YOUR_KEY"; // PremiumConnection pooling for high-frequency trading:
// Use connection pool for many transactions
use solana_client::rpc_client::RpcClient;
use std::sync::Arc;
lazy_static! {
static ref RPC_CLIENT: Arc<RpcClient> = Arc::new(
RpcClient::new("https://api.mainnet-beta.solana.com".to_string())
);
}๐ Supported Tokens & Networks
Mainnet Tokens
| Token | Mint Address | Decimals | Status |
|---|---|---|---|
| SOL | Native | 9 | โ Live |
| USDC | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
6 | โ Live |
| USDT | Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenEqw |
6 | โ Live |
Network Support
- โ mainnet-beta - Production Solana network
- โ devnet - Development/testing network
- โ testnet - Solana testnet (limited use)
Future Token Support
- โณ PYUSD - PayPal USD (Token-2022 format)
- โณ Custom SPL tokens - User-defined mints
- โณ Compressed NFTs - Metaplex compression
๐ฅ Ready to build autonomous Solana agents? Start with Fuego! ๐ค