deploy
Deploy Solana program (devnet first, then mainnet)
mkdir -p ~/.claude/commands && curl -fsSL https://raw.githubusercontent.com/solanabr/solana-ai-kit/HEAD/.claude/commands/deploy.md -o ~/.claude/commands/deploy.mddeploy.md
You are deploying a Solana program. **ALWAYS test on devnet before mainnet.**
## Related Skills
- [deployment.md](../skills/deployment.md) - Full deployment workflow details
- [security.md](../skills/security.md) - Pre-deployment security checklist
## Step 1: Identify Target Network
```bash
echo "🎯 Deployment Target Selection"
echo ""
echo "Choose deployment target:"
echo " 1. devnet (testing - safe, free SOL)"
echo " 2. mainnet (production - REAL SOL, IRREVERSIBLE)"
echo ""
# Check current config
CURRENT_NETWORK=$(solana config get | grep "RPC URL" | awk '{print $3}')
echo "Current network: $CURRENT_NETWORK"
```
**IMPORTANT**: If this is a new program, **ALWAYS deploy to devnet first**.
---
## DEVNET DEPLOYMENT
### Step D1: Configure Devnet
```bash
echo "🌐 Configuring for devnet..."
solana config set --url devnet
# Verify
solana config get
# Should show: RPC URL: https://api.devnet.solana.com
```
### Step D2: Verify Build
```bash
echo "🔨 Building program..."
# Build
if [ -f "Anchor.toml" ]; then
anchor build
else
cargo build-sbf
fi
# Check program exists
ls -lh target/deploy/*.so
```
### Step D3: Fund Wallet
```bash
echo "💰 Checking wallet balance..."
solana address
solana balance
# If balance is low, airdrop (devnet only!)
solana airdrop 2
solana balance
```
### Step D4: Deploy to Devnet
```bash
echo "🚀 Deploying to devnet..."
if [ -f "Anchor.toml" ]; then
anchor deploy --provider.cluster devnet
else
solana program deploy target/deploy/program.so
fi
# Get program ID
PROGRAM_ID=$(solana address -k target/deploy/program-keypair.json)
echo "✅ Program deployed: $PROGRAM_ID"
# Save program ID
echo $PROGRAM_ID > .program-id-devnet
```
### Step D5: Verify Devnet Deployment
```bash
echo "🔍 Verifying deployment..."
solana program show $PROGRAM_ID
# Explorer link
echo ""
echo "📡 Explorer: https://explorer.solana.com/address/$PROGRAM_ID?cluster=devnet"
```
### Step D6: Test on Devnet
```bash
echo "🧪 Running devnet tests..."
if [ -f "Anchor.toml" ]; then
anchor test --skip-build --skip-deploy
fi
# Or run custom integration tests
```
### Devnet Checklist
- [ ] Program deployed to devnet
- [ ] Program ID saved
- [ ] Upgrade authority verified
- [ ] Program visible on explorer
- [ ] Basic functionality tested
- [ ] Integration with frontend tested
**Next step**: Test thoroughly on devnet for multiple days before mainnet.
---
## MAINNET DEPLOYMENT
### ⚠️ CRITICAL PRE-DEPLOYMENT CHECKLIST
**STOP: Do NOT proceed to mainnet without ALL items checked:**
- [ ] All tests passing (unit + integration + fuzz)
- [ ] Security audit completed (use /audit-solana)
- [ ] CU usage optimized and verified
- [ ] **Devnet testing successful (multiple days)**
- [ ] Program audited by professional firm (for financial programs)
- [ ] Emergency procedures documented
- [ ] Upgrade authority strategy decided
- [ ] Monitoring/alerts configured
### Step M1: CONFIRMATION REQUIRED
```
🚨 MAINNET DEPLOYMENT CONFIRMATION REQUIRED 🚨
Network: Solana Mainnet-Beta
Program: [program name]
Estimated Cost: [X SOL for deployment + buffer]
This action will:
- Deploy program to MAINNET (IRREVERSIBLE)
- Spend REAL SOL
- Make program publicly accessible
- Potentially handle user funds
⚠️ HAVE YOU COMPLETED:
- [ ] Security audit
- [ ] Professional code review
- [ ] Extensive devnet testing (multiple days)
- [ ] Emergency procedures
Type 'DEPLOY TO MAINNET' to confirm:
```
**DO NOT PROCEED WITHOUT USER CONFIRMATION**
### Step M2: Configure Mainnet
```bash
echo "🌐 Configuring for mainnet..."
solana config set --url mainnet-beta
# VERIFY
solana config get
# Must show: RPC URL: https://api.mainnet-beta.solana.com
# Check wallet and balance
solana address
solana balance
# Need ~3-5 SOL for deployment
```
### Step M3: Final Build Verification
```bash
echo "🔨 Final build verification..."
# Clean build
anchor clean
anchor build --verifiable
# Verify program size
ls -lh target/deploy/*.so
# Run all tests one more time
anchor test
# Security checks
cargo clippy -- -W clippy::all
cargo audit
```
### Step M4: Calculate Deployment Cost
```bash
# Estimate deployment cost
solana program deploy target/deploy/program.so --dry-run
# Ensure you have 2x this amount for safety
```
### Step M5: Deploy to Mainnet
```bash
echo "⚠️ FINAL CONFIRMATION"
echo "Network: $(solana config get | grep 'RPC URL')"
echo "Deployer: $(solana address)"
echo "Balance: $(solana balance)"
# Deploy
anchor deploy --provider.cluster mainnet-beta
# SAVE PROGRAM ID IMMEDIATELY
PROGRAM_ID=$(solana address -k target/deploy/program-keypair.json)
echo "🎯 DEPLOYED PROGRAM ID: $PROGRAM_ID"
# Save to file
echo $PROGRAM_ID > .program-id-mainnet
```
### Step M6: Verify Mainnet Deployment
```bash
# Verify program is on mainnet
solana program show $PROGRAM_ID
# Check upgrade authority
UPGRADE_AUTH=$(solana program show $PROGRAM_ID | grep "Upgrade Authority" | awk '{print $3}')
echo "Upgrade Authority: $UPGRADE_AUTH"
# Explorer
echo "Explorer: https://explorer.solana.com/address/$PROGRAM_ID"
# Verify program binary
solana program dump $PROGRAM_ID program-dump.so
diff target/deploy/program.so program-dump.so
```
### Step M7: Initial Mainnet Testing
**Test with SMALL amounts first!**
```bash
# Test read-only operations first
# Test write operations with MINIMAL amounts (0.01 SOL)
# Monitor for any issues
```
### Step M8: Post-Deployment
```bash
# Save deployment info
cat > deployment-mainnet.json <<EOF
{
"programId": "$PROGRAM_ID",
"deployedAt": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
"deployer": "$(solana address)",
"network": "mainnet-beta",
"upgradeAuthority": "$UPGRADE_AUTH"
}
EOF
# Update frontend
echo "NEXT_PUBLIC_PROGRAM_ID=$PROGRAM_ID" >> .env.production
```
### Mainnet Checklist
- [ ] Program deployed successfully
- [ ] Visible on Solana explorer
- [ ] Program ID documented
- [ ] Initial tests passed
- [ ] Monitoring active
- [ ] Emergency procedures ready
- [ ] Team notifiedAnchor framework specialist for rapid Solana program development. Use for building programs with Anchor macros, IDL generation, account validation, and standardized patterns. Prioritizes developer experience while maintaining security.\\n\\nUse when: Building new programs quickly, team projects needing standardization, projects requiring IDL for client generation, or when developer experience is prioritized over maximum CU optimization.
DeFi integration specialist for composing with Solana protocols including Jupiter, Drift, Kamino, Raydium, Orca, Meteora, Marginfi, and Sanctum. Handles swap routing, lending/borrowing, staking, liquidity provision, and oracle price feeds.\n\nUse when: Integrating DeFi protocols, building swap interfaces, implementing lending/borrowing, setting up yield strategies, working with Pyth/Switchboard oracles, or composing multi-protocol transactions.
CI/CD, infrastructure, and deployment specialist for Solana projects. Handles GitHub Actions, Docker, monitoring, RPC management, and Cloudflare Workers edge deployment.\n\nUse when: Setting up CI/CD pipelines, containerizing Solana validators or programs, configuring monitoring and alerting, managing RPC infrastructure, deploying edge workers, or automating build and deploy workflows.
Senior Solana game architect for game system design, Unity/C# architecture, on-chain game state, player progression, NFT integration, and PlaySolana ecosystem. Use for high-level game design decisions, architecture reviews, and planning complex game systems.\n\nUse when: Designing new Solana games from scratch, planning game state on-chain, Unity project architecture, integrating with PlaySolana/PSG1, or deciding between implementation approaches.
React Native and Expo specialist for building Solana mobile dApps. Handles mobile wallet adapter integration, transaction signing UX, deep linking, and mobile-specific performance optimization.\n\nUse when: Building React Native or Expo mobile apps with Solana integration, implementing mobile wallet adapter flows, setting up deep links for transaction signing, or optimizing mobile dApp performance.
CU optimization specialist using Pinocchio framework. Use for performance-critical programs requiring 80-95% CU reduction vs Anchor. Specializes in zero-copy access, manual validation, and minimal binary size.\\n\\nUse when: CU limits are being hit, transaction costs are significant at scale, binary size must be minimized, or maximum throughput is required.
Rust backend specialist for building async services that interact with Solana blockchain. Builds APIs, indexing services, and off-chain processing using Axum, Tokio, and modern async patterns.\n\nUse when: Building REST/WebSocket APIs for Solana dApps, implementing transaction indexers, creating webhook services, or any Rust backend that interacts with Solana.
Senior Solana program architect for system design, account structures, PDA schemes, token economics, and cross-program composability. Use for high-level design decisions, architecture reviews, and planning complex multi-program systems.\n\nUse when: Designing new programs from scratch, planning account structures, optimizing PDA schemes, reviewing architecture for security, or deciding between implementation approaches.