Skill flagged — suspicious patterns detected

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

Slv Rpc

v0.13.15

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

4· 647·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-rpc.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Slv Rpc" (poppin-fumi/slv-rpc) from ClawHub.
Skill page: https://clawhub.ai/poppin-fumi/slv-rpc
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-rpc

ClawHub CLI

Package manager switcher

npx clawhub@latest install slv-rpc
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The description promises Ansible playbooks and Jinja2 templates, but the package only contains SKILL.md, AGENT.md, README.md, an example inventory and a setup.sh — there are no ansible/ or jinja/ directories in the bundle. SKILL.md also instructs the agent to execute playbooks living in ~/.slv/template/{version}/ansible/, implying additional artifacts must be installed separately. This mismatch (claiming bundled playbooks vs. actually being an instruction-only skill that depends on external templates) is incoherent and worth verifying.
Instruction Scope
The runtime instructions stay within the domain of node deployment (gather SSH details, generate inventory, run ansible-playbook, monitor RPC health). They reference sensitive local files (SSH keys, ~/.slv/api.yml for an ERPC key) and will cause potentially destructive operations on remote servers (format/mount disks, copy keys, create systemd services, remove ledger files). Those actions are expected for this purpose but require explicit user confirmation before execution; SKILL.md does state to confirm destructive actions. Also, SKILL.md reads/writes files under ~/.slv and expects the user to supply private key paths — verify the agent won't transmit these elsewhere.
!
Install Mechanism
There is no formal install spec (lowest-risk model) and the provided scripts/setup.sh only prints and optionally runs standard installers (pip/apt/dnf/brew). However, the README/setup.sh suggests installing the solana CLI via a curl command pointing at https://release.anza.xyz/stable/install — this is an uncommon non-official domain for Solana installers and is a red flag. The script itself does not automatically run that curl, but it recommends it to users; any external installer URL that is not an official release host (e.g., release.solana.com or GitHub releases) should be treated cautiously.
Credentials
The skill declares no required environment variables or credentials, which matches the bundle. At runtime it expects the user's SSH private key path and may read an ERPC API key from ~/.slv/api.yml if present. Asking for SSH keys and an optional API key is proportional to deploying remote servers, but users should be aware that private keys and API keys are involved and must be provided via secure channels; the skill does not declare any special secrets beyond that.
Persistence & Privilege
always is false and there is no install spec that would force persistent background behavior. The skill is instruction-only (with a helper script) and does not request elevated platform privileges beyond normal user consent to run commands and playbooks.
What to consider before installing
This skill appears to be built to help deploy Solana RPC nodes, but it is missing the playbook/templates it claims to provide — it expects those to exist under ~/.slv/template/{version}/ansible/ (so verify where those come from). Before installing or running anything: 1) Confirm the canonical source repository (ValidatorsDAO/slv or an official release) and prefer downloading playbooks from the official GitHub release; 2) Do NOT run curl | sh from unknown domains — the README/setup script suggests a nonstandard Solana installer URL (release.anza.xyz) which you should treat as suspicious; obtain Solana from official sources instead; 3) Inspect any playbooks you will run (especially tasks that copy keys, mount/format disks, or remove ledgers) and run ansible-playbook with --check first and use limited targets; 4) Keep your private SSH keys local and never paste them into web forms; provide them only via SSH-agent or secure key files and confirm the skill will not exfiltrate them; 5) If you want higher assurance, request the full ansible/jinja template set and a link to the official repo/release tag and re-run this evaluation with those artifacts present.

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

ansiblevk9700ry1qsnv2q91pkz7g1t79h81s55eblockchainvk9700ry1qsnv2q91pkz7g1t79h81s55einfrastructurevk9700ry1qsnv2q91pkz7g1t79h81s55elatestvk975zg5egcmagv6sghy8rjhfjh83wx72rpcvk9700ry1qsnv2q91pkz7g1t79h81s55esolanavk9700ry1qsnv2q91pkz7g1t79h81s55e
647downloads
4stars
25versions
Updated 1h ago
v0.13.15
MIT-0

SLV RPC Skill

Ansible playbooks and Jinja2 templates for deploying and managing Solana RPC nodes (mainnet, testnet, devnet).

Supported RPC Types

TypeDescription
RPCStandard RPC node
Index RPCFull-index RPC node (with Old Faithful/yellowstone-faithful)
Geyser gRPCRPC with Geyser gRPC streaming
Index RPC + gRPCFull-index + gRPC streaming

Directory Structure

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

CLI Command ↔ Playbook Mapping

The slv r CLI commands map directly to these playbooks. {net} = mainnet-rpc, testnet-rpc, or devnet-rpc.

CLI CommandPlaybookDescription
slv r deploy{net}/init.ymlFull RPC node initialization and deployment
slv r start{net}/start_node.ymlStart RPC node
slv r stop{net}/stop_node.ymlStop RPC node
slv r restart{net}/restart_node.ymlRestart RPC node
slv r build:solana{net}/install_solana.ymlBuild Solana from source
slv r install:solanacmn/install_solana.ymlInstall Solana binary (deprecated, prefer build)
slv r setup:firedancer{net}/setup_firedancer.ymlSetup Firedancer
slv r update:firedancercmn/update_firedancer.ymlUpdate Firedancer binary
slv r update:script{net}/update_startup_config.ymlUpdate start-validator.sh from template
slv r update:geyser{net}/update_geyser.ymlUpdate Geyser plugin
slv r get:snapshot{net}/wget_snapshot.ymlDownload snapshot via aria2c
slv r cleanupcmn/rm_ledger.ymlRemove ledger/snapshot files
slv 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)

All Playbooks

Mainnet RPC (mainnet-rpc/)

PlaybookDescription
init.ymlFull RPC node initialization
init_richat_geyser.ymlInitialize Richat Geyser configuration
restart_node.ymlRestart RPC node
start_node.ymlStart RPC node
stop_node.ymlStop RPC node
install_solana.ymlBuild Solana from source
install_agave.ymlBuild Agave from source
install_jito.ymlBuild Jito from source
install_rust.ymlInstall Rust toolchain
install_package.ymlInstall system packages
install_richat.ymlInstall Richat gRPC plugin
install_of1.ymlInstall Old Faithful (yellowstone-faithful)
install_of1_service.ymlSetup Old Faithful systemd service
geyser_build.ymlBuild Yellowstone gRPC from source
geyser_richat_build.ymlBuild Richat gRPC plugin from source
update_geyser.ymlUpdate Geyser plugin
update_startup_config.ymlUpdate start-validator.sh from template
update_ubuntu.ymlUpdate Ubuntu packages
setup_firedancer.ymlSetup Firedancer for RPC
setup-solv-service.ymlSetup systemd service
start-solv-service.ymlStart systemd service
setup_ufw.ymlConfigure UFW firewall
setup_logrotate.ymlSetup log rotation
setup_norestart.ymlDisable auto-restart
configure_hugetlbfs.ymlConfigure hugepages for Firedancer
fail2ban_solana_rate_limit.ymlSetup fail2ban rate limiting
fail2ban_sshd.ymlSetup fail2ban for SSH
allow_ufw.ymlAdd UFW allow rules
add_solv.ymlAdd solv user
copy_keys.ymlCopy node keys
create-start-validator-sh.ymlGenerate start script from template
create-symlink.ymlCreate version symlinks
mount_disks.ymlMount and format disks
optimize_system.ymlOptimize system settings
run_restarter.ymlRun restarter script
run_snapshot_finder.ymlFind and download best snapshot

Testnet RPC (testnet-rpc/)

PlaybookDescription
init.ymlFull testnet RPC initialization
restart_node.ymlRestart node
start_node.yml / stop_node.ymlStart/stop node
install_solana.ymlBuild Solana from source
install_agave.yml / install_jito.ymlBuild client from source
install_richat.ymlInstall Richat plugin
geyser_build.ymlBuild Yellowstone gRPC
geyser_richat_build.ymlBuild Richat plugin from source
update_geyser.ymlUpdate Geyser plugin
update_firedancer.ymlUpdate Firedancer
update_startup_config.ymlUpdate start script
setup_firedancer.ymlSetup Firedancer
setup_solv_service.ymlSetup systemd service
create-start-validator-sh.ymlGenerate start script
wget_snapshot.ymlDownload snapshot

Devnet RPC (devnet-rpc/)

PlaybookDescription
init.ymlFull devnet RPC initialization
restart_node.ymlRestart node
start_node.yml / stop_node.ymlStart/stop node
install_solana.ymlBuild Solana from source
install_agave.yml / install_jito.ymlBuild client from source
install_richat.ymlInstall Richat plugin
geyser_build.ymlBuild Yellowstone gRPC
geyser_richat_build.ymlBuild Richat plugin from source
update_geyser.ymlUpdate Geyser plugin
update_startup_config.ymlUpdate start script
setup_firedancer.ymlSetup Firedancer
setup_solv_service.ymlSetup systemd service
create-start-validator-sh.ymlGenerate start script

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.yml / mount-disks.ymlMount and format disks
optimize_system.ymlOptimize system settings
disable_swap.ymlDisable swap
setup_logrotate.ymlConfigure log rotation
setup_node_exporter.ymlSetup Prometheus node exporter
setup_norestart.ymlDisable auto-restart
setup_unstaked_identity.ymlSetup unstaked identity keypair
restart_solv.ymlRestart solv service
start_solv.yml / stop_solv.ymlStart/stop solv service
start_firedancer.yml / stop_firedancer.ymlStart/stop Firedancer
copy_restart_sh.ymlCopy restarter script
copy_rpc_keys.ymlCopy RPC keys
update_ubuntu.ymlUpdate Ubuntu packages
wget_snapshot.ymlDownload snapshot
add_solv.ymlAdd solv user
fix_permissions.ymlFix file permissions

Key Variables (extra_vars)

VariableDescriptionDefault
rpc_typeRPC node type (RPC, Index RPC, Geyser gRPC, Index RPC + gRPC)RPC
validator_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-8025
port_rpcRPC port8899
port_grpcgRPC port10000

Geyser Plugin Sources

Both plugins are built from source (no binary downloads):

Usage

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.

Interactive Deployment Flow

See AGENT.md for the full step-by-step flow and examples/inventory.yml for output format.

Required Variables

VariablePromptValidation
server_ip"Target server IP?"Valid IPv4
network"mainnet, testnet, or devnet?"mainnet, testnet, devnet
region"Server region?"String
rpc_type"RPC type?"RPC, Index RPC, Geyser gRPC, Index RPC + gRPC
validator_type"Underlying client?"agave, jito, jito-bam, firedancer-agave
solana_version"Solana version? (default: 3.1.8)"Semver
identity_account"Node identity pubkey?"Base58 pubkey
snapshot_url"Snapshot URL? (auto for ERPC)"URL (cannot be empty for init)

Conditionally Required Variables

VariableDefaultWhen Required
jito_versionMatches solana_versionjito/jito-bam types
firedancer_versionfiredancer types
yellowstone_grpc_versionYellowstone gRPC plugin
richat_versionRichat plugin
of1_versionIndex RPC (Old Faithful)
epochIndex RPC (faithful service)
faithful_proxy_target_urlIndex RPC

Optional Variables

VariableDefaultWhen Required
ssh_usersolvAlways
port_rpc8899 (ERPC: 7211)Always
limit_ledger_size100000000Always
dynamic_port_range8000-8025Always
port_grpc10000gRPC types only
tpu_peer_addressIndex RPC (tx forwarding)
allowed_ssh_ipsStrongly recommended (UFW)
allowed_ipsOptional (UFW)
expected_shred_versionEpoch-dependentTestnet only

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

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-rpc/ansible/
ansible-playbook -i inventory.yml {network}-rpc/init.yml \
  -e '{"rpc_type":"<type>","solana_version":"<version>"}'

Comments

Loading comments...