{
  "schemaVersion": "1.0",
  "item": {
    "slug": "slv-validator",
    "name": "Slv Validator",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/POPPIN-FUMI/slv-validator",
    "canonicalUrl": "https://clawhub.ai/POPPIN-FUMI/slv-validator",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/slv-validator",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=slv-validator",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "AGENT.md",
      "README.md",
      "SKILL.md",
      "examples/inventory.yml",
      "scripts/setup.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "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."
        },
        {
          "label": "Upgrade existing",
          "body": "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."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/slv-validator"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/slv-validator",
    "agentPageUrl": "https://openagent3.xyz/skills/slv-validator/agent",
    "manifestUrl": "https://openagent3.xyz/skills/slv-validator/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/slv-validator/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "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."
      },
      {
        "label": "Upgrade existing",
        "body": "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."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "SLV Validator Skill",
        "body": "Ansible playbooks and Jinja2 templates for deploying and managing Solana validators (mainnet and testnet)."
      },
      {
        "title": "Supported Validator Types",
        "body": "TypeDescriptionjitoJito MEV client (default for mainnet)jito-bamJito with Block Awareness ModuleagaveStandard Agave validatorfiredancer-agaveFiredancer with Agave consensusfiredancer-jitoFiredancer with Jito consensus"
      },
      {
        "title": "Directory Structure",
        "body": "ansible/\n  mainnet-validator/   — Mainnet validator playbooks\n  testnet-validator/   — Testnet validator playbooks\n  cmn/                 — Shared common playbooks\njinja/\n  mainnet-validator/   — Mainnet Jinja2 templates\n  testnet-validator/   — Testnet Jinja2 templates\n  cmn/                 — Shared templates"
      },
      {
        "title": "CLI Command ↔ Playbook Mapping",
        "body": "The slv v CLI commands map directly to these playbooks. {net} = mainnet-validator or testnet-validator.\n\nCLI 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)"
      },
      {
        "title": "Mainnet Validator (mainnet-validator/)",
        "body": "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"
      },
      {
        "title": "Testnet Validator (testnet-validator/)",
        "body": "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"
      },
      {
        "title": "Shared Common (cmn/)",
        "body": "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"
      },
      {
        "title": "Key Variables (extra_vars)",
        "body": "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—"
      },
      {
        "title": "Usage",
        "body": "All playbooks are designed to be run via ansible-playbook with extra_vars:\n\nansible-playbook -i inventory mainnet-validator/init.yml \\\n  -e '{\"validator_type\":\"jito\",\"solana_version\":\"3.1.8\",\"snapshot_url\":\"https://...\"}'\n\nNo versions.yml required — all variables can be passed via extra_vars."
      },
      {
        "title": "Interactive Deployment Flow",
        "body": "When deploying a new validator, the agent should guide the user through variable collection\nin this order. See AGENT.md for the full step-by-step flow and examples/inventory.yml\nfor the generated output format."
      },
      {
        "title": "Required Variables (must collect)",
        "body": "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)"
      },
      {
        "title": "Optional Variables (show defaults, confirm)",
        "body": "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)"
      },
      {
        "title": "Optional: Reference RPC",
        "body": "VariableDescriptionDefaultreference_rpc_urlReference RPC endpoint for slot sync comparison (e.g., ERPC)—\n\nERPC API keys are free at https://erpc.global — enables full slot sync monitoring during deployment and updates."
      },
      {
        "title": "Pre-flight: Fresh Server Setup",
        "body": "If the target is a new server without a solv user:\n\nansible-playbook -i inventory.yml cmn/add_solv.yml \\\n  -e '{\"ansible_user\":\"ubuntu\"}' --become"
      },
      {
        "title": "Deployment Command",
        "body": "All paths relative to skill's ansible/ directory:\n\ncd /path/to/slv-validator/ansible/\nansible-playbook -i inventory.yml {network}-validator/init.yml \\\n  -e '{\"validator_type\":\"<type>\",\"solana_version\":\"<version>\",\"snapshot_url\":\"<url>\"}'"
      },
      {
        "title": "Dry-Run First",
        "body": "Always offer --check mode before actual deployment:\n\nansible-playbook -i inventory.yml {network}-validator/init.yml \\\n  -e '{\"validator_type\":\"jito\",\"solana_version\":\"3.1.8\"}' --check"
      }
    ],
    "body": "SLV Validator Skill\n\nAnsible playbooks and Jinja2 templates for deploying and managing Solana validators (mainnet and testnet).\n\nSupported Validator Types\nType\tDescription\njito\tJito MEV client (default for mainnet)\njito-bam\tJito with Block Awareness Module\nagave\tStandard Agave validator\nfiredancer-agave\tFiredancer with Agave consensus\nfiredancer-jito\tFiredancer with Jito consensus\nDirectory Structure\nansible/\n  mainnet-validator/   — Mainnet validator playbooks\n  testnet-validator/   — Testnet validator playbooks\n  cmn/                 — Shared common playbooks\njinja/\n  mainnet-validator/   — Mainnet Jinja2 templates\n  testnet-validator/   — Testnet Jinja2 templates\n  cmn/                 — Shared templates\n\nCLI Command ↔ Playbook Mapping\n\nThe slv v CLI commands map directly to these playbooks. {net} = mainnet-validator or testnet-validator.\n\nCLI Command\tPlaybook\tDescription\nslv v deploy\t{net}/init.yml\tFull node initialization and deployment\nslv v start\t{net}/start_node.yml\tStart validator\nslv v stop\t{net}/stop_node.yml\tStop validator\nslv v restart\t{net}/restart_node.yml\tRestart validator\nslv v build:solana\t{net}/install_solana.yml\tBuild Solana from source\nslv v install:solana\tcmn/install_solana.yml\tInstall Solana binary (deprecated, prefer build)\nslv v setup:firedancer\t{net}/setup_firedancer.yml\tSetup/update Firedancer\nslv v update:firedancer\t{net}/update_firedancer.yml\tUpdate Firedancer binary\nslv v update:script\t{net}/update_startup_config.yml\tUpdate start-validator.sh from template\nslv v set:identity\t{net}/set_identity_key.yml\tSet validator identity key\nslv v set:unstaked\t{net}/set_unstaked_key.yml\tSwitch to unstaked identity\nslv v get:snapshot\t{net}/wget_snapshot.yml\tDownload snapshot via aria2c\nslv v cleanup\tcmn/rm_ledger.yml\tRemove ledger/snapshot files\nslv v switch\t{net}/nodowntime_migrate.yml\tZero-downtime identity migration\nslv v list\t(no playbook)\tList validators (CLI only)\nslv v gen:vote-account\t(no playbook)\tCreate vote account (solana CLI)\nAll Playbooks\nMainnet Validator (mainnet-validator/)\nPlaybook\tDescription\ninit.yml\tFull node initialization (Agave/Jito)\ninit-jito.yml\tJito-specific initialization\ninit-firedancer.yml\tFiredancer initialization\nrestart_node.yml\tRestart validator\nstart_node.yml\tStart validator\nstop_node.yml\tStop validator\ninstall_solana.yml\tBuild Solana from source\ninstall_agave.yml\tBuild Agave from source\ninstall_jito.yml\tBuild Jito from source\ninstall_rust.yml\tInstall Rust toolchain\nsetup_firedancer.yml\tSetup Firedancer binary and config\nupdate_firedancer.yml\tUpdate Firedancer binary\nupdate_startup_config.yml\tUpdate start-validator.sh from Jinja template\ndeploy-start-validator-sh.yml\tDeploy start script to remote\ncreate-start-validator-sh.yml\tGenerate start script from template\nnodowntime_migrate.yml\tZero-downtime identity migration between nodes\nset_identity_key.yml\tSet validator identity key\nset_identity_to_active.yml\tActivate identity key\nset_unstaked_key.yml\tSwitch to unstaked identity\nswitch_on_identity.yml\tEnable identity (tower copy + key deploy)\nswitch_off_identity.yml\tDisable identity (tower backup)\nswitch_on_firedancer_identity.yml\tEnable Firedancer identity\nswitch_off_firedancer_identity.yml\tDisable Firedancer identity\ncopy_keys.yml\tCopy validator keys to node\ncopy_restart_sh.yml\tCopy restarter script\ncreate_overrides.yml\tGenerate overrides.yml from template\nsetup_solv_service.yml\tSetup systemd service\nstart-solv-service.yml\tStart systemd service\nsetup_ufw.yml\tConfigure UFW firewall\nsetup_fb_ufw.yml\tConfigure Firedancer-specific UFW rules\nsetup_logrotate.yml\tSetup log rotation\nconfigure_hugetlbfs.yml\tConfigure hugepages for Firedancer\nfail2ban_solana_rate_limit.yml\tSetup fail2ban rate limiting\nrun_snapshot_finder.yml\tFind and download best snapshot\nTestnet Validator (testnet-validator/)\nPlaybook\tDescription\ninit.yml\tFull initialization (Jito)\ninit-agave.yml\tAgave-specific initialization\ninit-firedancer.yml\tFiredancer initialization\nrestart_node.yml\tRestart validator\nstart_node.yml\tStart validator\nstop_node.yml\tStop validator\ninstall_solana.yml\tBuild Solana from source\ninstall_agave.yml\tBuild Agave from source\ninstall_jito.yml\tBuild Jito from source\ninstall_firedancer.yml\tBuild Firedancer from source\nsetup_firedancer.yml\tSetup Firedancer\nsetup_firedancer_agave.yml\tSetup Firedancer with Agave\nsetup_firedancer_jito.yml\tSetup Firedancer with Jito\nupdate_firedancer.yml\tUpdate Firedancer binary\nupdate_startup_config.yml\tUpdate start script from template\ndeploy-start-validator-sh.yml\tDeploy start script\ncreate-start-validator-sh-agave.yml\tGenerate Agave start script\ncreate-start-validator-sh-jito.yml\tGenerate Jito start script\nnodowntime_migrate.yml\tZero-downtime identity migration\nset_identity_key.yml\tSet identity key\nset_identity_to_active.yml\tActivate identity\nset_unstaked_key.yml\tSwitch to unstaked identity\nswitch_on_identity.yml / switch_off_identity.yml\tToggle identity\nswitch_on_firedancer_identity.yml / switch_off_firedancer_identity.yml\tToggle Firedancer identity\nchange_identity_and_restart.yml\tChange identity and restart in one step\ncopy_keys.yml\tCopy keys to node\nrm_ledger.yml\tRemove ledger data\nrestart_agave_with_rm_ledger.yml\tRestart with ledger removal\nrestart_firedancer.yml\tRestart Firedancer\nrestart_firedancer_with_rm_ledger.yml\tRestart Firedancer with ledger removal\nrestart_solv.yml\tRestart solv service\nsetup_agave.yml\tSetup Agave\nsetup_agave_ufw.yml\tAgave UFW rules\nsetup_solv_service.yml\tSetup systemd service\nsetup_solv_service_init.yml\tInitialize systemd service\nsetup_snapshot_finder.yml\tSetup snapshot finder\nadd_solv.yml\tAdd solv user\nShared Common (cmn/)\nPlaybook\tDescription\nbuild_solana.yml\tBuild Solana from source (dispatches to build_agave/build_jito)\nbuild_agave.yml\tBuild Agave from GitHub source\nbuild_jito.yml\tBuild Jito from GitHub source\ninstall_solana.yml\tInstall Solana binary (deprecated)\ninstall_package.yml\tInstall system packages\ninstall_rust.yml\tInstall Rust toolchain\nmount_disks.yml\tMount and format disks\noptimize_system.yml\tOptimize system settings (sysctl, limits)\ndisable_swap.yml\tDisable swap\nsetup_logrotate.yml\tConfigure log rotation\nsetup_node_exporter.yml\tSetup Prometheus node exporter\nsetup_norestart.yml\tDisable auto-restart\nsetup_ufw.yml\tConfigure UFW firewall\nsetup_unstaked_identity.yml\tSetup unstaked identity keypair\nrestart_solv.yml\tRestart solv service\ncopy_restart_sh.yml\tCopy restarter script\nupdate_ubuntu.yml\tUpdate Ubuntu packages\nwget_snapshot.yml\tDownload snapshot\nadd_solv.yml\tAdd solv user\nrm_ledger.yml\tRemove ledger data\nfix_permissions.yml\tFix file permissions\nKey Variables (extra_vars)\nVariable\tDescription\tDefault\nvalidator_type\tValidator type (jito, jito-bam, agave, firedancer-agave, firedancer-jito)\tjito\nsolana_version\tSolana/Agave version to build\t—\njito_version\tJito version to build\t—\nfiredancer_version\tFiredancer version\t—\nsnapshot_url\tSnapshot download URL\t—\nidentity_account\tValidator identity pubkey\t—\nvote_account\tVote account pubkey\t—\nblock_engine_url\tJito block engine URL\thttps://frankfurt.mainnet.block-engine.jito.wtf\nshred_receiver_address\tJito shred receiver address\t64.130.50.14:1002\ncommission_bps\tCommission in basis points\t0\ndynamic_port_range\tValidator port range\t8000-8025\nlimit_ledger_size\tLedger size limit\t200000000\nexpected_shred_version\tExpected shred version (testnet, epoch-dependent)\t—\nexpected_bank_hash\tExpected bank hash (testnet, optional)\t—\nwait_for_supermajority\tWait for supermajority slot (testnet, optional)\t—\nsource_host\tSource host for nodowntime migration\t—\ntarget_host\tTarget host for nodowntime migration\t—\nUsage\n\nAll playbooks are designed to be run via ansible-playbook with extra_vars:\n\nansible-playbook -i inventory mainnet-validator/init.yml \\\n  -e '{\"validator_type\":\"jito\",\"solana_version\":\"3.1.8\",\"snapshot_url\":\"https://...\"}'\n\n\nNo versions.yml required — all variables can be passed via extra_vars.\n\nInteractive Deployment Flow\n\nWhen 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.\n\nRequired Variables (must collect)\nVariable\tPrompt\tValidation\nserver_ip\t\"Target server IP?\"\tValid IPv4\nnetwork\t\"Mainnet or testnet?\"\tmainnet or testnet\nregion\t\"Server region? (amsterdam, frankfurt, tokyo, ny, ...)\"\tString\nvalidator_type\t\"Which validator type?\"\tjito, jito-bam, agave, firedancer-agave, firedancer-jito\nsolana_version\t\"Solana version? (default: 3.1.8)\"\tSemver\njito_version\t\"Jito version?\" (if jito/jito-bam)\tSemver\nfiredancer_version\t\"Firedancer version?\" (if firedancer)\tString\nidentity_account\t\"Validator identity pubkey? (or generate)\"\tBase58 pubkey or generate\nvote_account\t\"Vote account pubkey? (or generate)\"\tBase58 pubkey or generate\nsnapshot_url\t\"Snapshot URL? (auto-detected for ERPC nodes)\"\tURL (cannot be empty for init)\nOptional Variables (show defaults, confirm)\nVariable\tDefault\tWhen Required\nssh_user\tsolv (ubuntu for fresh servers)\tAlways\ncommission_bps\t0\tAlways\ndynamic_port_range\t8000-8025\tAlways\nlimit_ledger_size\t200000000\tAlways\nallowed_ssh_ips\t—\tStrongly recommended (UFW)\nallowed_ips\t—\tOptional (UFW)\nblock_engine_url\tAuto by region\tJito types only\nshred_receiver_address\tAuto by region\tJito types only\nexpected_shred_version\tEpoch-dependent\tTestnet only\nexpected_bank_hash\tEpoch-dependent\tTestnet (optional)\nwait_for_supermajority\tEpoch-dependent\tTestnet (optional)\nOptional: Reference RPC\nVariable\tDescription\tDefault\nreference_rpc_url\tReference RPC endpoint for slot sync comparison (e.g., ERPC)\t—\n\nERPC API keys are free at https://erpc.global — enables full slot sync monitoring during deployment and updates.\n\nPre-flight: Fresh Server Setup\n\nIf the target is a new server without a solv user:\n\nansible-playbook -i inventory.yml cmn/add_solv.yml \\\n  -e '{\"ansible_user\":\"ubuntu\"}' --become\n\nDeployment Command\n\nAll paths relative to skill's ansible/ directory:\n\ncd /path/to/slv-validator/ansible/\nansible-playbook -i inventory.yml {network}-validator/init.yml \\\n  -e '{\"validator_type\":\"<type>\",\"solana_version\":\"<version>\",\"snapshot_url\":\"<url>\"}'\n\nDry-Run First\n\nAlways offer --check mode before actual deployment:\n\nansible-playbook -i inventory.yml {network}-validator/init.yml \\\n  -e '{\"validator_type\":\"jito\",\"solana_version\":\"3.1.8\"}' --check"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/POPPIN-FUMI/slv-validator",
    "publisherUrl": "https://clawhub.ai/POPPIN-FUMI/slv-validator",
    "owner": "POPPIN-FUMI",
    "version": "0.10.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/slv-validator",
    "downloadUrl": "https://openagent3.xyz/downloads/slv-validator",
    "agentUrl": "https://openagent3.xyz/skills/slv-validator/agent",
    "manifestUrl": "https://openagent3.xyz/skills/slv-validator/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/slv-validator/agent.md"
  }
}