validatorsdao/slv/slv-rpc
Claude Code and agent skill by validatorsdao/slv
- community
Checking that the SKILL.md file is still in the repository.
Install
npx vskill@latest install validatorsdao/slv/slv-rpcSKILL.md
SLV RPC Skill
Ansible playbooks and Jinja2 templates for deploying and managing Solana RPC nodes (mainnet, testnet, devnet).
Supported RPC Types
| Type | Description | |
|---|---|---|
RPC | Standard RPC node | |
Index RPC | Full-index RPC node (with Old Faithful/yellowstone-faithful) | |
Geyser gRPC | RPC with Geyser gRPC streaming | |
Index RPC + gRPC | Full-index + gRPC streaming |
Directory Structure
Benchmarking Notes
Planned CLI shape
A natural future command shape is:
This would mirror the existing slv check grpc / slv check shreds style by passing arguments through to the installed benchmark binary.
geyserbench config generation
For shredstream and grpc benchmark flows, the agent should be able to generate config.toml from:
- benchmark type
- two endpoint URLs
- ERPC API key from
~/.slv/api.yml
If ~/.slv/api.yml does not contain the required ERPC API key, instruct the user to get a free key and configure it first.
Example config:
For gRPC benchmarks, use the same structure but set the endpoint kind to the appropriate gRPC-compatible type.
CLI Command ↔ Playbook Mapping
The slv r CLI commands map directly to these playbooks. {net} = mainnet-rpc, testnet-rpc, or devnet-rpc.
| CLI Command | Playbook | Description | |
|---|---|---|---|
slv r deploy | {net}/init.yml | Full RPC node initialization and deployment | |
slv r start | {net}/start_node.yml | Start RPC node | |
slv r stop | {net}/stop_node.yml | Stop RPC node | |
slv r restart | {net}/restart_node.yml | Restart RPC node | |
slv r build:solana | {net}/install_solana.yml | Build Solana from source | |
slv r install:solana | cmn/install_solana.yml | Install Solana binary (deprecated, prefer build) | |
slv r setup:firedancer | {net}/setup_firedancer.yml | Setup Firedancer | |
slv r update:firedancer | cmn/update_firedancer.yml | Update Firedancer binary | |
slv r update:script | {net}/update_startup_config.yml | Update start-validator.sh from template | |
slv r update:geyser | {net}/update_geyser.yml | Update Geyser plugin | |
slv r get:snapshot | {net}/wget_snapshot.yml | Download snapshot via aria2c | |
slv r cleanup | cmn/rm_ledger.yml | Remove ledger/snapshot files | |
slv disable pwd-login | cmn/disable_pwd_login.yml | Disable SSH password authentication | |
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/)
| Playbook | Description | |
|---|---|---|
init.yml | Full RPC node initialization | |
init_richat_geyser.yml | Initialize Richat Geyser configuration (richat has no release for agave 4.3 or later yet) | |
restart_node.yml | Restart RPC node | |
start_node.yml | Start RPC node | |
stop_node.yml | Stop RPC node | |
install_solana.yml | Build Solana from source | |
install_agave.yml | Build Agave from source | |
install_jito.yml | Build Jito from source | |
install_rust.yml | Install Rust toolchain | |
install_package.yml | Install system packages | |
install_richat.yml | Install Richat gRPC plugin (only with geyser_plugin: richat) | |
install_of1.yml | Install Old Faithful (yellowstone-faithful) | |
install_of1_service.yml | Setup Old Faithful systemd service | |
cmn/of1_index_cache_sync.yml | Install rolling-cache sync script + daily timer | |
geyser_build.yml | Build Yellowstone gRPC from source (the Geyser plugin of init.yml by default) | |
cmn/stop_richat.yml | Stop and disable richat.service on a node that ran richat, and move its plugin library aside (librichat_plugin_agave.so.disabled), after the Yellowstone build of init.yml | |
cmn/check_alpenglow_floor.yml | Stop init.yml, before it changes anything, on an agave, jito or allnodes version or a Yellowstone plugin older than Alpenglow runs on (4.3.0 on mainnet, 4.4.0-beta.0 on testnet and devnet) | |
geyser_richat_build.yml | Build Richat gRPC plugin from source (only with geyser_plugin: richat) | |
update_geyser.yml | Update Geyser plugin | |
update_startup_config.yml | Update start-validator.sh from template | |
update_ubuntu.yml | Update Ubuntu packages | |
setup_firedancer.yml | Setup Firedancer for RPC | |
setup-solv-service.yml | Setup systemd service | |
start-solv-service.yml | Start systemd service | |
setup_ufw.yml | Configure UFW firewall | |
setup_logrotate.yml | Setup log rotation | |
setup_norestart.yml | Disable auto-restart | |
configure_hugetlbfs.yml | Configure hugepages for Firedancer | |
fail2ban_solana_rate_limit.yml | Setup fail2ban rate limiting | |
fail2ban_sshd.yml | Setup fail2ban for SSH | |
allow_ufw.yml | Add UFW allow rules | |
add_solv.yml | Add solv user | |
copy_keys.yml | Copy node keys | |
create-start-validator-sh.yml | Generate start script from template | |
create-symlink.yml | Create version symlinks | |
mount_disks.yml | Mount and format disks | |
optimize_system.yml | Optimize system settings | |
run_restarter.yml | Run restarter script | |
run_snapshot_finder.yml | Find and download best snapshot |
Testnet RPC (testnet-rpc/)
| Playbook | Description | |
|---|---|---|
init.yml | Full testnet RPC initialization | |
restart_node.yml | Restart node | |
start_node.yml / stop_node.yml | Start/stop node | |
install_solana.yml | Build Solana from source | |
install_agave.yml / install_jito.yml | Build client from source | |
install_richat.yml | Install Richat plugin (only with geyser_plugin: richat) | |
geyser_build.yml | Build Yellowstone gRPC (the Geyser plugin of init.yml by default) | |
geyser_richat_build.yml | Build Richat plugin from source (only with geyser_plugin: richat) | |
update_geyser.yml | Update Geyser plugin | |
update_firedancer.yml | Update Firedancer | |
update_startup_config.yml | Update start script | |
setup_firedancer.yml | Setup Firedancer | |
setup_solv_service.yml | Setup systemd service | |
create-start-validator-sh.yml | Generate start script | |
wget_snapshot.yml | Download snapshot |
Devnet RPC (devnet-rpc/)
| Playbook | Description | |
|---|---|---|
init.yml | Full devnet RPC initialization | |
restart_node.yml | Restart node | |
start_node.yml / stop_node.yml | Start/stop node | |
install_solana.yml | Build Solana from source | |
install_agave.yml / install_jito.yml | Build client from source | |
install_richat.yml | Install Richat plugin (only with geyser_plugin: richat) | |
geyser_build.yml | Build Yellowstone gRPC (the Geyser plugin of init.yml by default) | |
geyser_richat_build.yml | Build Richat plugin from source (only with geyser_plugin: richat) | |
update_geyser.yml | Update Geyser plugin | |
update_startup_config.yml | Update start script | |
setup_firedancer.yml | Setup Firedancer | |
setup_solv_service.yml | Setup systemd service | |
create-start-validator-sh.yml | Generate start script |
Shared Common (cmn/)
| Playbook | Description | |
|---|---|---|
build_solana.yml | Build Solana from source (dispatches to build_agave/build_jito) | |
build_agave.yml | Build Agave from GitHub source | |
build_jito.yml | Build Jito from GitHub source | |
install_solana.yml | Install Solana binary (deprecated) | |
install_package.yml | Install system packages | |
install_rust.yml | Install Rust toolchain | |
mount_disks.yml / mount-disks.yml | Mount and format disks | |
optimize_system.yml | Optimize system settings | |
disable_swap.yml | Disable swap | |
disable_pwd_login.yml | Disable SSH password authentication and restart sshd | |
setup_logrotate.yml | Configure log rotation | |
setup_node_exporter.yml | Setup Prometheus node exporter | |
setup_norestart.yml | Disable auto-restart | |
setup_unstaked_identity.yml | Setup unstaked identity keypair | |
restart_solv.yml | Restart solv service | |
start_solv.yml / stop_solv.yml | Start/stop solv service | |
start_firedancer.yml / stop_firedancer.yml | Start/stop Firedancer | |
copy_restart_sh.yml | Copy restarter script | |
copy_rpc_keys.yml | Copy RPC keys | |
update_ubuntu.yml | Update Ubuntu packages | |
wget_snapshot.yml | Download snapshot | |
add_solv.yml | Add solv user | |
fix_permissions.yml | Fix file permissions |
Key Variables (extra_vars)
| Variable | Description | Default | |
|---|---|---|---|
rpc_type | RPC node type (RPC, Index RPC, Geyser gRPC, Index RPC + gRPC) | RPC | |
validator_type | Client type (agave, jito, firedancer-agave, firedancer-jito) | — | |
agave_version | Agave version of an agave node, without the leading v | version_agave of the <network>_rpcs section of ~/.slv/versions.yml | |
jito_version | Jito version of a jito node, with the -jito suffix (e.g. 4.3.2-jito) | version_jito of the same section | |
allnodes_jito_version | Allnodes-Jito version of an allnodes-jito node (e.g. 4.3.2-allnodes) | — (the RPC sections hold no pin for it) | |
firedancer_version | Firedancer version | — | |
geyser_plugin | Geyser plugin of Geyser gRPC and Index RPC + gRPC nodes, an inventory variable: yellowstone, or richat, which init.yml refuses while the agave of the node is 4.3 or later | yellowstone | |
geyser_version | Yellowstone gRPC release tag | geyser_version of the network in ~/.slv/versions.yml | |
richat_version | Richat plugin version, for geyser_plugin: richat (e.g. richat-v8.1.0) | — | |
snapshot_url | Snapshot download URL | — | |
tpu_peer_address | TPU peer address (for Index RPC transaction forwarding) | — | |
limit_ledger_size | Ledger size limit | 200000000 (Index), 100000000 (others) | |
dynamic_port_range | Port range | 8000-8025 | |
port_rpc | RPC port | 8899 | |
port_grpc | gRPC port | 10000 |
Geyser Plugin Sources
Both plugins are built from source (no binary downloads):
- Yellowstone gRPC: https://github.com/rpcpool/yellowstone-grpc
- Richat: https://github.com/lamports-dev/richat
Yellowstone is the default plugin of init.yml. Richat is chosen with geyser_plugin: richat in the inventory, but richat has no release for agave 4.3 or later yet: init.yml stops, before it changes anything, on a node set to run such an agave. The Richat playbooks stay for when a release exists. A node that ran Richat gets richat.service stopped and disabled when it is initialised with Yellowstone, so the two never share port 10000.
Usage
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
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingoss-skills/slv-rpc/SKILL.md
Popularity
- Repository stars
- 84
- Repository forks
- 12
- 7-day trend score
- 22
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 19 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/validatorsdao/slv/slv-rpc)