Skill flagged — suspicious patterns detected

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

Slv Grpc Geyser

v0.13.15

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

4· 712· 25 versions· 1 current· 1 all-time· Updated 8h ago· MIT-0
byELSOUL LABO B.V.@poppin-fumi

Install

openclaw skills install slv-grpc-geyser

SLV gRPC Geyser Skill

Ansible playbooks and Jinja2 templates for deploying and managing Solana gRPC Geyser streaming nodes.

Supported Configurations

ConfigDescription
Yellowstone gRPCStandard Geyser gRPC plugin (Triton/rpcpool)
Richat gRPCRichat Geyser plugin (lamports-dev)

Directory Structure

ansible/
  mainnet-rpc/   — Playbooks (gRPC Geyser uses mainnet-rpc playbooks)
  cmn/           — Shared common playbooks
jinja/
  mainnet-rpc/   — Jinja2 templates
  cmn/           — Shared templates

CLI Command ↔ Playbook Mapping

gRPC Geyser nodes are managed via slv r (RPC) commands with rpc_type set to Geyser gRPC or Index RPC + gRPC.

CLI CommandPlaybookDescription
slv r deploymainnet-rpc/init.ymlFull gRPC Geyser node initialization
slv r startmainnet-rpc/start_node.ymlStart node
slv r stopmainnet-rpc/stop_node.ymlStop node
slv r restartmainnet-rpc/restart_node.ymlRestart node
slv r build:solanamainnet-rpc/install_solana.ymlBuild Solana from source
slv r update:geysermainnet-rpc/update_geyser.ymlUpdate Geyser plugin
slv r update:scriptmainnet-rpc/update_startup_config.ymlUpdate start-validator.sh
slv r setup:firedancermainnet-rpc/setup_firedancer.ymlSetup Firedancer

Key Playbooks

PlaybookDescription
init.ymlFull gRPC Geyser node initialization
init_richat_geyser.ymlRichat Geyser initialization
geyser_build.ymlBuild Yellowstone gRPC from GitHub source
geyser_richat_build.ymlBuild Richat plugin from GitHub source
install_richat.ymlInstall Richat plugin
update_geyser.ymlUpdate Geyser plugin
restart_node.ymlRestart node
start_node.yml / stop_node.ymlStart/stop node
update_startup_config.ymlUpdate start-validator.sh from template
setup_firedancer.ymlSetup Firedancer
run_snapshot_finder.ymlFind and download best snapshot
run_restarter.ymlRun restarter script

Geyser Build Details

Yellowstone gRPC (geyser_build.yml)

Richat (geyser_richat_build.yml)

  • Clones from https://github.com/lamports-dev/richat
  • Builds with cargo build --release
  • Produces librichat_plugin_agave.so
  • Config template: jinja/mainnet-rpc/geyser-richat.json.j2
  • Service template: jinja/mainnet-rpc/richat.service.j2
  • Settings template: jinja/mainnet-rpc/richat-setting.yml.j2

Key Variables (extra_vars)

VariableDescriptionDefault
rpc_typeMust be Geyser gRPC or Index RPC + gRPC
validator_typeClient type (agave, jito, firedancer-agave, etc.)
solana_versionSolana/Agave version
yellowstone_grpc_versionYellowstone gRPC version tag
richat_versionRichat plugin version (e.g. richat-v8.1.0)
snapshot_urlSnapshot download URL
port_grpcgRPC listen port10000
limit_ledger_sizeLedger size limit100000000

Jinja Templates

TemplateDescription
start-validator.sh.j2Main start script (branches by rpc_type)
start-mainnet-rpc-grpc.sh.j2gRPC-specific start script
geyser.json.j2Yellowstone gRPC config
geyser-richat.json.j2Richat gRPC config
richat-setting.yml.j2Richat settings
richat.service.j2Richat systemd service
firedancer-config.toml.j2Firedancer config
firedancer.service.j2Firedancer systemd service
solv.service.j2Solv systemd service
generate_configs.sh.j2Config generation script

Geyser Plugin Sources

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

Usage

# Deploy a new gRPC Geyser node
ansible-playbook -i inventory mainnet-rpc/init.yml \
  -e '{"rpc_type":"Geyser gRPC","solana_version":"3.1.8","yellowstone_grpc_version":"v6.0.0","snapshot_url":"https://..."}'

# Build/update Richat plugin
ansible-playbook -i inventory mainnet-rpc/geyser_richat_build.yml \
  -e '{"richat_version":"richat-v8.1.0"}'

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
region"Server region?"String
rpc_type"Geyser gRPC or Index RPC + gRPC?"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)

Plugin Selection (choose ONE)

PluginVersion VariableSourceOutput
Yellowstone gRPCyellowstone_grpc_versiongithub.com/rpcpool/yellowstone-grpclibyellowstone_grpc_geyser.so
Richatrichat_versiongithub.com/lamports-dev/richatlibrichat_plugin_agave.so

Both are built from source (no pre-built binaries). Build time: ~15-30 min. Only collect the version variable for the selected plugin.

Conditionally Required Variables

VariableWhen Required
jito_versionjito/jito-bam types
firedancer_versionfiredancer types
shred_receiver_addressjito/jito-bam (auto by region)
block_engine_urljito/jito-bam (auto by region)

Optional Variables

VariableDefaultWhen Required
ssh_usersolvAlways
port_grpc10000Always
port_rpc8899 (ERPC: 7211)Always
limit_ledger_size100000000Always
dynamic_port_range8000-8025Always
allowed_ssh_ipsStrongly recommended (UFW)
allowed_ipsOptional (UFW)

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-grpc-geyser/ansible/
ansible-playbook -i inventory.yml mainnet-rpc/init.yml \
  -e '{"rpc_type":"Geyser gRPC","solana_version":"<version>","richat_version":"<version>"}'

Version tags

latestvk97adp0rwxmxb2vwn2acvcpvbx83wbfd