Command-line interface for managing Solana agentic wallets. Create wallets, execute trades, check balances, and run DeFi operations via shell commands.
Use this skill when you need to:
# Clone the repository
git clone https://github.com/Jonathanthedeveloper/agentic-wallet.git
cd agentic-wallet
# Install dependencies
bun install
# Navigate to CLI
cd apps/examples/saw-cli
bun install
Set environment variables:
export SOLANA_PRIVATE_KEY="your_base58_private_key"
export SOLANA_RPC_URL="https://api.devnet.solana.com"
export JUPITER_API_KEY="optional_jupiter_api_key"
bun run src/index.ts init
This sets up the configuration directory and encryption keys.
# Create from existing private key
bun run src/index.ts create my-wallet --key "$SOLANA_PRIVATE_KEY"
# Or create a new wallet (generates random keypair)
bun run src/index.ts create my-wallet
# Get wallet address
bun run src/index.ts address
# Check balance
bun run src/index.ts balance
# Transfer SOL
bun run src/index.ts transfer <recipient_address> <amount>
# Get devnet SOL (for testing)
bun run src/index.ts airdrop
List all available tools:
bun run src/index.ts tool list
Show tool schema (required parameters):
bun run src/index.ts tool show <tool_name>
Execute a tool with JSON arguments:
# Example: Swap tokens
bun run src/index.ts tool run jupiter_swap '{"inputMint":"So11111111111111111111111111111111111111112","outputMint":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","amount":"0.1"}'
# Example: Get token price
bun run src/index.ts tool run jupiter_get_token_price '{"mints":["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"]}'
# Example: Check holdings
bun run src/index.ts tool run jupiter_get_holdings '{}'
Run as an MCP server for AI agents:
bun run src/index.ts serve --wallet my-wallet
This starts the server on stdio, accepting MCP protocol commands.
Tools are dynamically loaded based on configured plugins. Common tools include:
jupiter_swap - Swap tokens with optimal routingjupiter_get_token_price - Get real-time token pricesjupiter_search_token - Search tokens by name/symboljupiter_get_holdings - Get wallet token balancesjupiter_create_limit_order - Create limit ordersjupiter_create_recurring_order - Set up DCA strategiesjupiter_lend_deposit - Deposit to Jupiter Lendsolana_get_balance - Get SOL/SPL balancesolana_transfer - Transfer tokenssolana_request_airdrop - Request devnet SOLraydium_swap_exact_in - Raydium token swapsraydiumGetSwapPoolsByMints - Get liquidity pools| Token | Mint Address |
|---|---|
| SOL | So11111111111111111111111111111111111111112 |
| USDC | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
| USDT | Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11Mcx8eK1VZKu |
| JUP | JUPyiwrYJFskUPiHa7hkeR8VUtkqjberbSOWd91pbT2 |
# Use devnet (default)
export SOLANA_RPC_URL="https://api.devnet.solana.com"
# Use mainnet
export SOLANA_RPC_URL="https://api.mainnet-beta.solana.com"
For programmatic use:
bun run src/index.ts --json balance
bun run src/index.ts --json tool list
# List all wallets
bun run src/index.ts list
# Select default wallet
bun run src/index.ts select my-wallet
# Delete a wallet
bun run src/index.ts delete old-wallet
Create and select a wallet:
bun run src/index.ts create my-wallet --key "$SOLANA_PRIVATE_KEY"
bun run src/index.ts select my-wallet
Check available wallets:
bun run src/index.ts list
Verify input JSON:
bun run src/index.ts tool show <tool_name>
async function executeWalletCommand(command: string, args: string[]): Promise<string> {
const { exec } = require('child_process');
const cmd = `bun run src/index.ts ${command} ${args.join(' ')}`;
return new Promise((resolve, reject) => {
exec(cmd, { cwd: './apps/examples/saw-cli' }, (error, stdout) => {
if (error) reject(error);
resolve(stdout);
});
});
}
// Usage
const balance = await executeWalletCommand('balance', []);
#!/bin/bash
cd apps/examples/saw-cli
# Get balance and save to file
bun run src/index.ts --json balance > /tmp/wallet_balance.json
# Check if balance is low, request airdrop
BALANCE=$(cat /tmp/wallet_balance.json | jq '.balance')
if (( $(echo "$BALANCE < 1" | bc -l) )); then
bun run src/index.ts airdrop
fi