surfpool

Configure and operate Surfpool local Solana networks with mainnet forking and cheatcodes.

Updated Jul 10, 2026
One-click install
npx skills add https://github.com/Kaleb-Rupe/aurora --skill surfpool-kaleb-rupe
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: surfpool
Source: https://github.com/Kaleb-Rupe/aurora/tree/main/system/aurora-bridge/.claude/skills/surfpool
Command: npx skills add https://github.com/Kaleb-Rupe/aurora --skill surfpool-kaleb-rupe

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Testing Solana programs against realistic state is slow and cumbersome with solana-test-validator, which requires large snapshots and cannot easily access mainnet accounts. This Skill provides complete guidance for Surfpool, a drop-in replacement that forks mainnet state lazily, manipulates accounts and time via cheatcode RPC methods, and profiles transactions locally. ## Core Features & Use Cases - Local Surfnet with Mainnet Forking: Start a local validator that pulls mainnet accounts on demand, with CLI flags, Surfpool.toml configuration, and Docker support. - Cheatcode RPC Methods: Set account and token balances, time travel, pause and advance the clock, reset the network, and profile transaction compute usage via surfnet_* methods. - Infrastructure as Code and Studio: Define reproducible deployments with txtx runbooks and inspect transactions, accounts, and compute usage in the Surfpool Studio dashboard. - Use Case: While building an Anchor program that interacts with mainnet USDC, start Surfpool, set a test wallet's USDC balance with surfnet_setTokenAccount, run your tests against http://127.0.0.1:8899, and profile the swap transaction's compute units before deployment. ## Quick Start Ask the assistant to help you install Surfpool, start a local Surfnet with mainnet forking, and write a test that sets token balances and time-travels using cheatcodes.

Frequently Asked Questions about surfpool

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I test Solana programs locally with mainnet state?

Run surfpool start to launch a local Surfnet that lazily forks mainnet accounts on demand. Point your client to http://127.0.0.1:8899 and your tests can read real mainnet accounts, programs, and token balances without downloading snapshots.

What is the difference between Surfpool and solana-test-validator?

Surfpool is a drop-in replacement for solana-test-validator that adds mainnet forking with copy-on-read account loading, cheatcode RPC methods for state and time manipulation, txtx Infrastructure as Code runbooks, and the Surfpool Studio inspection dashboard.

How do I set token balances for testing with cheatcodes?

Call the surfnet_setTokenAccount RPC method with the owner, mint, and an update object containing the amount as a string. This creates or modifies the token account directly, letting you fund test wallets with USDC or other tokens without faucets or swaps.

Does Surfpool work with Anchor projects?

Yes, Surfpool auto-detects Anchor projects and deploys programs from target/deploy on startup. Configure your tests to use anchor.AnchorProvider.local with http://127.0.0.1:8899, and register IDLs via surfnet_registerIdl for account parsing.

Why does Surfpool fail to start on port 8899?

Port 8899 is already used by another process such as solana-test-validator or a previous Surfpool instance. Find and kill the process with lsof -i :8899, or start Surfpool on a different port with surfpool start -p 9999.

How do I simulate time passing in Solana tests?

Use the surfnet_timeTravel cheatcode to jump to a specific slot, epoch, or timestamp, or surfnet_advanceClock to move forward by a number of slots. You can also pause and resume block production with surfnet_pauseClock and surfnet_resumeClock.