Slv Validator

# SLV Validator Skill

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "Slv Validator" with this command: npx skills add POPPIN-FUMI/slv-validator

SLV Validator Skill

Ansible playbooks and Jinja2 templates for deploying and managing Solana validators (mainnet and testnet).

Supported Validator Types

TypeDescription
jitoJito MEV client (default for mainnet)
jito-bamJito with Block Awareness Module
agaveStandard Agave validator
firedancer-agaveFiredancer with Agave consensus
firedancer-jitoFiredancer with Jito consensus

Directory Structure

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

CLI Command ↔ Playbook Mapping

The slv v CLI commands map directly to these playbooks. {net} = mainnet-validator or testnet-validator.

CLI CommandPlaybookDescription
slv v deploy{net}/init.ymlFull node initialization and deployment
slv v start{net}/start_node.ymlStart validator
slv v stop{net}/stop_node.ymlStop validator
slv v restart{net}/restart_node.ymlRestart validator
slv v build:solana{net}/install_solana.ymlBuild Solana from source
slv v install:solanacmn/install_solana.ymlInstall Solana binary (deprecated, prefer build)
slv v setup:firedancer{net}/setup_firedancer.ymlSetup/update Firedancer
slv v update:firedancer{net}/update_firedancer.ymlUpdate Firedancer binary
slv v update:script{net}/update_startup_config.ymlUpdate start-validator.sh from template
slv v set:identity{net}/set_identity_key.ymlSet validator identity key
slv v set:unstaked{net}/set_unstaked_key.ymlSwitch to unstaked identity
slv v get:snapshot{net}/wget_snapshot.ymlDownload snapshot via aria2c
slv v cleanupcmn/rm_ledger.ymlRemove ledger/snapshot files
slv v switch{net}/nodowntime_migrate.ymlZero-downtime identity migration
slv v list(no playbook)List validators (CLI only)
slv v gen:vote-account(no playbook)Create vote account (solana CLI)

All Playbooks

Mainnet Validator (mainnet-validator/)

PlaybookDescription
init.ymlFull node initialization (Agave/Jito)
init-jito.ymlJito-specific initialization
init-firedancer.ymlFiredancer initialization
restart_node.ymlRestart validator
start_node.ymlStart validator
stop_node.ymlStop validator
install_solana.ymlBuild Solana from source
install_agave.ymlBuild Agave from source
install_jito.ymlBuild Jito from source
install_rust.ymlInstall Rust toolchain
setup_firedancer.ymlSetup Firedancer binary and config
update_firedancer.ymlUpdate Firedancer binary
update_startup_config.ymlUpdate start-validator.sh from Jinja template
deploy-start-validator-sh.ymlDeploy start script to remote
create-start-validator-sh.ymlGenerate start script from template
nodowntime_migrate.ymlZero-downtime identity migration between nodes
set_identity_key.ymlSet validator identity key
set_identity_to_active.ymlActivate identity key
set_unstaked_key.ymlSwitch to unstaked identity
switch_on_identity.ymlEnable identity (tower copy + key deploy)
switch_off_identity.ymlDisable identity (tower backup)
switch_on_firedancer_identity.ymlEnable Firedancer identity
switch_off_firedancer_identity.ymlDisable Firedancer identity
copy_keys.ymlCopy validator keys to node
copy_restart_sh.ymlCopy restarter script
create_overrides.ymlGenerate overrides.yml from template
setup_solv_service.ymlSetup systemd service
start-solv-service.ymlStart systemd service
setup_ufw.ymlConfigure UFW firewall
setup_fb_ufw.ymlConfigure Firedancer-specific UFW rules
setup_logrotate.ymlSetup log rotation
configure_hugetlbfs.ymlConfigure hugepages for Firedancer
fail2ban_solana_rate_limit.ymlSetup fail2ban rate limiting
run_snapshot_finder.ymlFind and download best snapshot

Testnet Validator (testnet-validator/)

PlaybookDescription
init.ymlFull initialization (Jito)
init-agave.ymlAgave-specific initialization
init-firedancer.ymlFiredancer initialization
restart_node.ymlRestart validator
start_node.ymlStart validator
stop_node.ymlStop validator
install_solana.ymlBuild Solana from source
install_agave.ymlBuild Agave from source
install_jito.ymlBuild Jito from source
install_firedancer.ymlBuild Firedancer from source
setup_firedancer.ymlSetup Firedancer
setup_firedancer_agave.ymlSetup Firedancer with Agave
setup_firedancer_jito.ymlSetup Firedancer with Jito
update_firedancer.ymlUpdate Firedancer binary
update_startup_config.ymlUpdate start script from template
deploy-start-validator-sh.ymlDeploy start script
create-start-validator-sh-agave.ymlGenerate Agave start script
create-start-validator-sh-jito.ymlGenerate Jito start script
nodowntime_migrate.ymlZero-downtime identity migration
set_identity_key.ymlSet identity key
set_identity_to_active.ymlActivate identity
set_unstaked_key.ymlSwitch to unstaked identity
switch_on_identity.yml / switch_off_identity.ymlToggle identity
switch_on_firedancer_identity.yml / switch_off_firedancer_identity.ymlToggle Firedancer identity
change_identity_and_restart.ymlChange identity and restart in one step
copy_keys.ymlCopy keys to node
rm_ledger.ymlRemove ledger data
restart_agave_with_rm_ledger.ymlRestart with ledger removal
restart_firedancer.ymlRestart Firedancer
restart_firedancer_with_rm_ledger.ymlRestart Firedancer with ledger removal
restart_solv.ymlRestart solv service
setup_agave.ymlSetup Agave
setup_agave_ufw.ymlAgave UFW rules
setup_solv_service.ymlSetup systemd service
setup_solv_service_init.ymlInitialize systemd service
setup_snapshot_finder.ymlSetup snapshot finder
add_solv.ymlAdd solv user

Shared Common (cmn/)

PlaybookDescription
build_solana.ymlBuild Solana from source (dispatches to build_agave/build_jito)
build_agave.ymlBuild Agave from GitHub source
build_jito.ymlBuild Jito from GitHub source
install_solana.ymlInstall Solana binary (deprecated)
install_package.ymlInstall system packages
install_rust.ymlInstall Rust toolchain
mount_disks.ymlMount and format disks
optimize_system.ymlOptimize system settings (sysctl, limits)
disable_swap.ymlDisable swap
setup_logrotate.ymlConfigure log rotation
setup_node_exporter.ymlSetup Prometheus node exporter
setup_norestart.ymlDisable auto-restart
setup_ufw.ymlConfigure UFW firewall
setup_unstaked_identity.ymlSetup unstaked identity keypair
restart_solv.ymlRestart solv service
copy_restart_sh.ymlCopy restarter script
update_ubuntu.ymlUpdate Ubuntu packages
wget_snapshot.ymlDownload snapshot
add_solv.ymlAdd solv user
rm_ledger.ymlRemove ledger data
fix_permissions.ymlFix file permissions

Key Variables (extra_vars)

VariableDescriptionDefault
validator_typeValidator type (jito, jito-bam, agave, firedancer-agave, firedancer-jito)jito
solana_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.wtf
shred_receiver_addressJito shred receiver address64.130.50.14:1002
commission_bpsCommission in basis points0
dynamic_port_rangeValidator port range8000-8025
limit_ledger_sizeLedger size limit200000000
expected_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

Usage

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.

Interactive Deployment Flow

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.

Required Variables (must collect)

VariablePromptValidation
server_ip"Target server IP?"Valid IPv4
network"Mainnet or testnet?"mainnet or testnet
region"Server region? (amsterdam, frankfurt, tokyo, ny, ...)"String
validator_type"Which validator type?"jito, jito-bam, agave, firedancer-agave, firedancer-jito
solana_version"Solana version? (default: 3.1.8)"Semver
jito_version"Jito version?" (if jito/jito-bam)Semver
firedancer_version"Firedancer version?" (if firedancer)String
identity_account"Validator identity pubkey? (or generate)"Base58 pubkey or generate
vote_account"Vote account pubkey? (or generate)"Base58 pubkey or generate
snapshot_url"Snapshot URL? (auto-detected for ERPC nodes)"URL (cannot be empty for init)

Optional Variables (show defaults, confirm)

VariableDefaultWhen Required
ssh_usersolv (ubuntu for fresh servers)Always
commission_bps0Always
dynamic_port_range8000-8025Always
limit_ledger_size200000000Always
allowed_ssh_ipsStrongly recommended (UFW)
allowed_ipsOptional (UFW)
block_engine_urlAuto by regionJito types only
shred_receiver_addressAuto by regionJito types only
expected_shred_versionEpoch-dependentTestnet only
expected_bank_hashEpoch-dependentTestnet (optional)
wait_for_supermajorityEpoch-dependentTestnet (optional)

Optional: Reference RPC

VariableDescriptionDefault
reference_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.

Pre-flight: Fresh Server Setup

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

Deployment Command

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>"}'

Dry-Run First

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

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Web3

Slv Grpc Geyser

Ansible playbooks and templates for deploying and managing Solana gRPC Geyser streaming nodes with Yellowstone or Richat plugins.

Registry SourceRecently Updated
4283
Profile unavailable
Web3

Slv Rpc

Ansible playbooks and templates to deploy, manage, and update Solana RPC nodes on mainnet, testnet, and devnet with support for RPC, indexing, and gRPC.

Registry SourceRecently Updated
4279
Profile unavailable
Web3

Whistle RPC

Production Solana RPC for AI agents. Unlimited JSON-RPC, WebSocket. 1 SOL/month via on-chain payment. No rate limits, no tiers.

Registry SourceRecently Updated
0464
Profile unavailable