Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Deploys and manages Solana validators on mainnet and testnet using Ansible playbooks and Jinja2 templates for multiple validator types including jito, agave,...
Deploys and manages Solana validators on mainnet and testnet using Ansible playbooks and Jinja2 templates for multiple validator types including jito, agave,...
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 validators (mainnet and testnet).
TypeDescriptionjitoJito MEV client (default for mainnet)jito-bamJito with Block Awareness ModuleagaveStandard Agave validatorfiredancer-agaveFiredancer with Agave consensusfiredancer-jitoFiredancer with Jito consensus
ansible/ mainnet-validator/ — Mainnet validator playbooks testnet-validator/ — Testnet validator playbooks cmn/ — Shared common playbooks jinja/ mainnet-validator/ — Mainnet Jinja2 templates testnet-validator/ — Testnet Jinja2 templates cmn/ — Shared templates
The slv v CLI commands map directly to these playbooks. {net} = mainnet-validator or testnet-validator. CLI CommandPlaybookDescriptionslv v deploy{net}/init.ymlFull node initialization and deploymentslv v start{net}/start_node.ymlStart validatorslv v stop{net}/stop_node.ymlStop validatorslv v restart{net}/restart_node.ymlRestart validatorslv v build:solana{net}/install_solana.ymlBuild Solana from sourceslv v install:solanacmn/install_solana.ymlInstall Solana binary (deprecated, prefer build)slv v setup:firedancer{net}/setup_firedancer.ymlSetup/update Firedancerslv v update:firedancer{net}/update_firedancer.ymlUpdate Firedancer binaryslv v update:script{net}/update_startup_config.ymlUpdate start-validator.sh from templateslv v set:identity{net}/set_identity_key.ymlSet validator identity keyslv v set:unstaked{net}/set_unstaked_key.ymlSwitch to unstaked identityslv v get:snapshot{net}/wget_snapshot.ymlDownload snapshot via aria2cslv v cleanupcmn/rm_ledger.ymlRemove ledger/snapshot filesslv v switch{net}/nodowntime_migrate.ymlZero-downtime identity migrationslv v list(no playbook)List validators (CLI only)slv v gen:vote-account(no playbook)Create vote account (solana CLI)
PlaybookDescriptioninit.ymlFull node initialization (Agave/Jito)init-jito.ymlJito-specific initializationinit-firedancer.ymlFiredancer initializationrestart_node.ymlRestart validatorstart_node.ymlStart validatorstop_node.ymlStop validatorinstall_solana.ymlBuild Solana from sourceinstall_agave.ymlBuild Agave from sourceinstall_jito.ymlBuild Jito from sourceinstall_rust.ymlInstall Rust toolchainsetup_firedancer.ymlSetup Firedancer binary and configupdate_firedancer.ymlUpdate Firedancer binaryupdate_startup_config.ymlUpdate start-validator.sh from Jinja templatedeploy-start-validator-sh.ymlDeploy start script to remotecreate-start-validator-sh.ymlGenerate start script from templatenodowntime_migrate.ymlZero-downtime identity migration between nodesset_identity_key.ymlSet validator identity keyset_identity_to_active.ymlActivate identity keyset_unstaked_key.ymlSwitch to unstaked identityswitch_on_identity.ymlEnable identity (tower copy + key deploy)switch_off_identity.ymlDisable identity (tower backup)switch_on_firedancer_identity.ymlEnable Firedancer identityswitch_off_firedancer_identity.ymlDisable Firedancer identitycopy_keys.ymlCopy validator keys to nodecopy_restart_sh.ymlCopy restarter scriptcreate_overrides.ymlGenerate overrides.yml from templatesetup_solv_service.ymlSetup systemd servicestart-solv-service.ymlStart systemd servicesetup_ufw.ymlConfigure UFW firewallsetup_fb_ufw.ymlConfigure Firedancer-specific UFW rulessetup_logrotate.ymlSetup log rotationconfigure_hugetlbfs.ymlConfigure hugepages for Firedancerfail2ban_solana_rate_limit.ymlSetup fail2ban rate limitingrun_snapshot_finder.ymlFind and download best snapshot
PlaybookDescriptioninit.ymlFull initialization (Jito)init-agave.ymlAgave-specific initializationinit-firedancer.ymlFiredancer initializationrestart_node.ymlRestart validatorstart_node.ymlStart validatorstop_node.ymlStop validatorinstall_solana.ymlBuild Solana from sourceinstall_agave.ymlBuild Agave from sourceinstall_jito.ymlBuild Jito from sourceinstall_firedancer.ymlBuild Firedancer from sourcesetup_firedancer.ymlSetup Firedancersetup_firedancer_agave.ymlSetup Firedancer with Agavesetup_firedancer_jito.ymlSetup Firedancer with Jitoupdate_firedancer.ymlUpdate Firedancer binaryupdate_startup_config.ymlUpdate start script from templatedeploy-start-validator-sh.ymlDeploy start scriptcreate-start-validator-sh-agave.ymlGenerate Agave start scriptcreate-start-validator-sh-jito.ymlGenerate Jito start scriptnodowntime_migrate.ymlZero-downtime identity migrationset_identity_key.ymlSet identity keyset_identity_to_active.ymlActivate identityset_unstaked_key.ymlSwitch to unstaked identityswitch_on_identity.yml / switch_off_identity.ymlToggle identityswitch_on_firedancer_identity.yml / switch_off_firedancer_identity.ymlToggle Firedancer identitychange_identity_and_restart.ymlChange identity and restart in one stepcopy_keys.ymlCopy keys to noderm_ledger.ymlRemove ledger datarestart_agave_with_rm_ledger.ymlRestart with ledger removalrestart_firedancer.ymlRestart Firedancerrestart_firedancer_with_rm_ledger.ymlRestart Firedancer with ledger removalrestart_solv.ymlRestart solv servicesetup_agave.ymlSetup Agavesetup_agave_ufw.ymlAgave UFW rulessetup_solv_service.ymlSetup systemd servicesetup_solv_service_init.ymlInitialize systemd servicesetup_snapshot_finder.ymlSetup snapshot finderadd_solv.ymlAdd solv user
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.ymlMount and format disksoptimize_system.ymlOptimize system settings (sysctl, limits)disable_swap.ymlDisable swapsetup_logrotate.ymlConfigure log rotationsetup_node_exporter.ymlSetup Prometheus node exportersetup_norestart.ymlDisable auto-restartsetup_ufw.ymlConfigure UFW firewallsetup_unstaked_identity.ymlSetup unstaked identity keypairrestart_solv.ymlRestart solv servicecopy_restart_sh.ymlCopy restarter scriptupdate_ubuntu.ymlUpdate Ubuntu packageswget_snapshot.ymlDownload snapshotadd_solv.ymlAdd solv userrm_ledger.ymlRemove ledger datafix_permissions.ymlFix file permissions
VariableDescriptionDefaultvalidator_typeValidator type (jito, jito-bam, agave, firedancer-agave, firedancer-jito)jitosolana_versionSolana/Agave version to build—jito_versionJito version to build—firedancer_versionFiredancer version—snapshot_urlSnapshot download URL—identity_accountValidator identity pubkey—vote_accountVote account pubkey—block_engine_urlJito block engine URLhttps://frankfurt.mainnet.block-engine.jito.wtfshred_receiver_addressJito shred receiver address64.130.50.14:1002commission_bpsCommission in basis points0dynamic_port_rangeValidator port range8000-8025limit_ledger_sizeLedger size limit200000000expected_shred_versionExpected shred version (testnet, epoch-dependent)—expected_bank_hashExpected bank hash (testnet, optional)—wait_for_supermajorityWait for supermajority slot (testnet, optional)—source_hostSource host for nodowntime migration—target_hostTarget host for nodowntime migration—
All playbooks are designed to be run via ansible-playbook with extra_vars: ansible-playbook -i inventory mainnet-validator/init.yml \ -e '{"validator_type":"jito","solana_version":"3.1.8","snapshot_url":"https://..."}' No versions.yml required — all variables can be passed via extra_vars.
When deploying a new validator, the agent should guide the user through variable collection in this order. See AGENT.md for the full step-by-step flow and examples/inventory.yml for the generated output format.
VariablePromptValidationserver_ip"Target server IP?"Valid IPv4network"Mainnet or testnet?"mainnet or testnetregion"Server region? (amsterdam, frankfurt, tokyo, ny, ...)"Stringvalidator_type"Which validator type?"jito, jito-bam, agave, firedancer-agave, firedancer-jitosolana_version"Solana version? (default: 3.1.8)"Semverjito_version"Jito version?" (if jito/jito-bam)Semverfiredancer_version"Firedancer version?" (if firedancer)Stringidentity_account"Validator identity pubkey? (or generate)"Base58 pubkey or generatevote_account"Vote account pubkey? (or generate)"Base58 pubkey or generatesnapshot_url"Snapshot URL? (auto-detected for ERPC nodes)"URL (cannot be empty for init)
VariableDefaultWhen Requiredssh_usersolv (ubuntu for fresh servers)Alwayscommission_bps0Alwaysdynamic_port_range8000-8025Alwayslimit_ledger_size200000000Alwaysallowed_ssh_ips—Strongly recommended (UFW)allowed_ips—Optional (UFW)block_engine_urlAuto by regionJito types onlyshred_receiver_addressAuto by regionJito types onlyexpected_shred_versionEpoch-dependentTestnet onlyexpected_bank_hashEpoch-dependentTestnet (optional)wait_for_supermajorityEpoch-dependentTestnet (optional)
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.
If the target is a new server without a solv user: 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-validator/ansible/ ansible-playbook -i inventory.yml {network}-validator/init.yml \ -e '{"validator_type":"<type>","solana_version":"<version>","snapshot_url":"<url>"}'
Always offer --check mode before actual deployment: ansible-playbook -i inventory.yml {network}-validator/init.yml \ -e '{"validator_type":"jito","solana_version":"3.1.8"}' --check
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.