Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Slv Validator

v0.13.15

Deploys and manages Solana validators on mainnet and testnet using Ansible playbooks and Jinja2 templates for multiple validator types including jito, agave,...

4· 670·1 current·1 all-time
byELSOUL LABO B.V.@poppin-fumi

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for poppin-fumi/slv-validator.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Slv Validator" (poppin-fumi/slv-validator) from ClawHub.
Skill page: https://clawhub.ai/poppin-fumi/slv-validator
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Canonical install target

openclaw skills install poppin-fumi/slv-validator

ClawHub CLI

Package manager switcher

npx clawhub@latest install slv-validator
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
The skill claims to deploy/manage Solana validators and the included SKILL.md, AGENT.md, example inventory, and setup script are consistent with that purpose. However the registry metadata declares no required binaries or env vars while the documentation clearly requires ansible-core, SSH access, and (optionally) solana-cli and an ERPC API endpoint. The omission of declared prerequisites is a mismatch worth noting.
!
Instruction Scope
Runtime instructions direct the agent to collect SSH info, SSH key paths, generate inventories, run ansible-playbook against remote servers, configure systemd/UFW/fail2ban, and to use playbooks that include 'copy_keys.yml' (copy validator keys to node). Those actions legitimately belong to a validator operator, but they require the agent (or user) to handle private keys and run potentially destructive operations. The docs warn not to log/store private keys, but the skill gives the agent capability to read key paths and transfer keys—this is sensitive and should be confirmed and audited before use. The instructions also reference external snapshot/block-engine endpoints and an optional ERPC API key (not declared in metadata).
Install Mechanism
There is no install spec (instruction-only), which reduces risk. The included scripts/setup.sh installs ansible-core via pip/apt/brew (standard). Documentation suggests installing solana-cli via a curl|sh install URL (https://release.anza.xyz/stable/install), which is an external installer — executing that without inspection is higher risk. Overall install behavior is typical for this tooling but the curl-based install recommendation should be treated cautiously.
Credentials
The skill declares no required environment variables or primary credential, and that generally fits the files. The docs do mention an optional ERPC API key / reference_rpc_url and require SSH private key paths for Ansible connections; those are operationally necessary but were not declared in registry metadata. No unrelated cloud credentials (AWS/GCP) are requested, which is appropriate.
Persistence & Privilege
always:false and normal autonomous invocation behavior — appropriate. The skill writes runtime templates to ~/.slv/template/ (user-local) and configures remote services via Ansible; it does not request permanent platform-wide privileges or modify other skills. No 'always:true' or other excessive persistence is present.
What to consider before installing
This skill appears to be a genuine Solana-validator deployment helper, but review these before installing or running it: 1) The registry metadata omits required binaries (ansible-core, SSH, optional solana-cli/ERPC), so expect to run installs and supply SSH keys yourself. 2) Inspect any playbook that copies keys (copy_keys.yml) — prefer generating keys on the target server rather than uploading private keys from your workstation. 3) Do NOT blindly run curl|sh installers (README suggests release.anza.xyz); fetch and inspect remote install scripts first. 4) Verify external endpoints listed (jito.*, erpc.global, snapshot URLs) are expected/trusted for your deployment. 5) Run ansible with --check (dry-run), review generated inventory and playbook variable values, and confirm before any destructive steps (stop/cleanup/migrate). If you want higher assurance, ask the skill author for the full Ansible playbook sources (so you can audit copy_keys.yml and any tasks that access secrets) or run these tools in a sandboxed environment first.

Like a lobster shell, security has layers — review code before you run it.

ansiblevk976qg05xw2sbx3kdqqjgype9d81s2x9blockchainvk976qg05xw2sbx3kdqqjgype9d81s2x9infrastructurevk976qg05xw2sbx3kdqqjgype9d81s2x9latestvk973hs8g77bxqw4x4ydv1jdn4h83wbxmsolanavk976qg05xw2sbx3kdqqjgype9d81s2x9validatorvk976qg05xw2sbx3kdqqjgype9d81s2x9
670downloads
4stars
25versions
Updated 1h ago
v0.13.15
MIT-0

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

Comments

Loading comments...