Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Ansible playbooks and templates to deploy, manage, and update Solana RPC nodes on mainnet, testnet, and devnet with support for RPC, indexing, and gRPC.
Ansible playbooks and templates to deploy, manage, and update Solana RPC nodes on mainnet, testnet, and devnet with support for RPC, indexing, and gRPC.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
Ansible playbooks and Jinja2 templates for deploying and managing Solana RPC nodes (mainnet, testnet, devnet).
TypeDescriptionRPCStandard RPC nodeIndex RPCFull-index RPC node (with Old Faithful/yellowstone-faithful)Geyser gRPCRPC with Geyser gRPC streamingIndex RPC + gRPCFull-index + gRPC streaming
ansible/ mainnet-rpc/ — Mainnet RPC playbooks testnet-rpc/ — Testnet RPC playbooks devnet-rpc/ — Devnet RPC playbooks cmn/ — Shared common playbooks jinja/ mainnet-rpc/ — Mainnet Jinja2 templates testnet-rpc/ — Testnet Jinja2 templates devnet-rpc/ — Devnet Jinja2 templates cmn/ — Shared templates
The slv r CLI commands map directly to these playbooks. {net} = mainnet-rpc, testnet-rpc, or devnet-rpc. CLI CommandPlaybookDescriptionslv r deploy{net}/init.ymlFull RPC node initialization and deploymentslv r start{net}/start_node.ymlStart RPC nodeslv r stop{net}/stop_node.ymlStop RPC nodeslv r restart{net}/restart_node.ymlRestart RPC nodeslv r build:solana{net}/install_solana.ymlBuild Solana from sourceslv r install:solanacmn/install_solana.ymlInstall Solana binary (deprecated, prefer build)slv r setup:firedancer{net}/setup_firedancer.ymlSetup Firedancerslv r update:firedancercmn/update_firedancer.ymlUpdate Firedancer binaryslv r update:script{net}/update_startup_config.ymlUpdate start-validator.sh from templateslv r update:geyser{net}/update_geyser.ymlUpdate Geyser pluginslv r get:snapshot{net}/wget_snapshot.ymlDownload snapshot via aria2cslv r cleanupcmn/rm_ledger.ymlRemove ledger/snapshot filesslv r list(no playbook)List RPC nodes (CLI only)slv r update:allowed-ips(no playbook)Update allowed IPs (CLI only)slv r init(no playbook)Interactive wizard (CLI only)
PlaybookDescriptioninit.ymlFull RPC node initializationinit_richat_geyser.ymlInitialize Richat Geyser configurationrestart_node.ymlRestart RPC nodestart_node.ymlStart RPC nodestop_node.ymlStop RPC nodeinstall_solana.ymlBuild Solana from sourceinstall_agave.ymlBuild Agave from sourceinstall_jito.ymlBuild Jito from sourceinstall_rust.ymlInstall Rust toolchaininstall_package.ymlInstall system packagesinstall_richat.ymlInstall Richat gRPC plugininstall_of1.ymlInstall Old Faithful (yellowstone-faithful)install_of1_service.ymlSetup Old Faithful systemd servicegeyser_build.ymlBuild Yellowstone gRPC from sourcegeyser_richat_build.ymlBuild Richat gRPC plugin from sourceupdate_geyser.ymlUpdate Geyser pluginupdate_startup_config.ymlUpdate start-validator.sh from templateupdate_ubuntu.ymlUpdate Ubuntu packagessetup_firedancer.ymlSetup Firedancer for RPCsetup-solv-service.ymlSetup systemd servicestart-solv-service.ymlStart systemd servicesetup_ufw.ymlConfigure UFW firewallsetup_logrotate.ymlSetup log rotationsetup_norestart.ymlDisable auto-restartconfigure_hugetlbfs.ymlConfigure hugepages for Firedancerfail2ban_solana_rate_limit.ymlSetup fail2ban rate limitingfail2ban_sshd.ymlSetup fail2ban for SSHallow_ufw.ymlAdd UFW allow rulesadd_solv.ymlAdd solv usercopy_keys.ymlCopy node keyscreate-start-validator-sh.ymlGenerate start script from templatecreate-symlink.ymlCreate version symlinksmount_disks.ymlMount and format disksoptimize_system.ymlOptimize system settingsrun_restarter.ymlRun restarter scriptrun_snapshot_finder.ymlFind and download best snapshot
PlaybookDescriptioninit.ymlFull testnet RPC initializationrestart_node.ymlRestart nodestart_node.yml / stop_node.ymlStart/stop nodeinstall_solana.ymlBuild Solana from sourceinstall_agave.yml / install_jito.ymlBuild client from sourceinstall_richat.ymlInstall Richat plugingeyser_build.ymlBuild Yellowstone gRPCgeyser_richat_build.ymlBuild Richat plugin from sourceupdate_geyser.ymlUpdate Geyser pluginupdate_firedancer.ymlUpdate Firedancerupdate_startup_config.ymlUpdate start scriptsetup_firedancer.ymlSetup Firedancersetup_solv_service.ymlSetup systemd servicecreate-start-validator-sh.ymlGenerate start scriptwget_snapshot.ymlDownload snapshot
PlaybookDescriptioninit.ymlFull devnet RPC initializationrestart_node.ymlRestart nodestart_node.yml / stop_node.ymlStart/stop nodeinstall_solana.ymlBuild Solana from sourceinstall_agave.yml / install_jito.ymlBuild client from sourceinstall_richat.ymlInstall Richat plugingeyser_build.ymlBuild Yellowstone gRPCgeyser_richat_build.ymlBuild Richat plugin from sourceupdate_geyser.ymlUpdate Geyser pluginupdate_startup_config.ymlUpdate start scriptsetup_firedancer.ymlSetup Firedancersetup_solv_service.ymlSetup systemd servicecreate-start-validator-sh.ymlGenerate start script
PlaybookDescriptionbuild_solana.ymlBuild Solana from source (dispatches to build_agave/build_jito)build_agave.ymlBuild Agave from GitHub sourcebuild_jito.ymlBuild Jito from GitHub sourceinstall_solana.ymlInstall Solana binary (deprecated)install_package.ymlInstall system packagesinstall_rust.ymlInstall Rust toolchainmount_disks.yml / mount-disks.ymlMount and format disksoptimize_system.ymlOptimize system settingsdisable_swap.ymlDisable swapsetup_logrotate.ymlConfigure log rotationsetup_node_exporter.ymlSetup Prometheus node exportersetup_norestart.ymlDisable auto-restartsetup_unstaked_identity.ymlSetup unstaked identity keypairrestart_solv.ymlRestart solv servicestart_solv.yml / stop_solv.ymlStart/stop solv servicestart_firedancer.yml / stop_firedancer.ymlStart/stop Firedancercopy_restart_sh.ymlCopy restarter scriptcopy_rpc_keys.ymlCopy RPC keysupdate_ubuntu.ymlUpdate Ubuntu packageswget_snapshot.ymlDownload snapshotadd_solv.ymlAdd solv userfix_permissions.ymlFix file permissions
VariableDescriptionDefaultrpc_typeRPC node type (RPC, Index RPC, Geyser gRPC, Index RPC + gRPC)RPCvalidator_typeClient type (agave, jito, firedancer-agave, firedancer-jito)—solana_versionSolana/Agave version—jito_versionJito version—firedancer_versionFiredancer version—yellowstone_grpc_versionYellowstone gRPC version—richat_versionRichat plugin version (e.g. richat-v8.1.0)—snapshot_urlSnapshot download URL—tpu_peer_addressTPU peer address (for Index RPC transaction forwarding)—limit_ledger_sizeLedger size limit200000000 (Index), 100000000 (others)dynamic_port_rangePort range8000-8025port_rpcRPC port8899port_grpcgRPC port10000
Both plugins are built from source (no binary downloads): Yellowstone gRPC: https://github.com/rpcpool/yellowstone-grpc Richat: https://github.com/lamports-dev/richat
ansible-playbook -i inventory mainnet-rpc/init.yml \ -e '{"rpc_type":"Index RPC","solana_version":"3.1.8","snapshot_url":"https://..."}' No versions.yml required — all variables can be passed via extra_vars.
See AGENT.md for the full step-by-step flow and examples/inventory.yml for output format.
VariablePromptValidationserver_ip"Target server IP?"Valid IPv4network"mainnet, testnet, or devnet?"mainnet, testnet, devnetregion"Server region?"Stringrpc_type"RPC type?"RPC, Index RPC, Geyser gRPC, Index RPC + gRPCvalidator_type"Underlying client?"agave, jito, jito-bam, firedancer-agavesolana_version"Solana version? (default: 3.1.8)"Semveridentity_account"Node identity pubkey?"Base58 pubkeysnapshot_url"Snapshot URL? (auto for ERPC)"URL (cannot be empty for init)
VariableDefaultWhen Requiredjito_versionMatches solana_versionjito/jito-bam typesfiredancer_version—firedancer typesyellowstone_grpc_version—Yellowstone gRPC pluginrichat_version—Richat pluginof1_version—Index RPC (Old Faithful)epoch—Index RPC (faithful service)faithful_proxy_target_url—Index RPC
VariableDefaultWhen Requiredssh_usersolvAlwaysport_rpc8899 (ERPC: 7211)Alwayslimit_ledger_size100000000Alwaysdynamic_port_range8000-8025Alwaysport_grpc10000gRPC types onlytpu_peer_address—Index RPC (tx forwarding)allowed_ssh_ips—Strongly recommended (UFW)allowed_ips—Optional (UFW)expected_shred_versionEpoch-dependentTestnet only
VariableDescriptionDefaultreference_rpc_urlReference RPC endpoint for slot sync comparison (e.g., ERPC)— ERPC API keys are free at https://erpc.global — enables full slot sync monitoring during deployment and updates.
ansible-playbook -i inventory.yml cmn/add_solv.yml \ -e '{"ansible_user":"ubuntu"}' --become
All paths relative to skill's ansible/ directory: cd /path/to/slv-rpc/ansible/ ansible-playbook -i inventory.yml {network}-rpc/init.yml \ -e '{"rpc_type":"<type>","solana_version":"<version>"}'
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.