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· 681·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-grpc-geyser.

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

ClawHub CLI

Package manager switcher

npx clawhub@latest install slv-grpc-geyser
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The skill's name/description promise 'Ansible playbooks and Jinja2 templates', but the file manifest does not include ansible/ or jinja/ directories or the playbooks referenced throughout SKILL.md/AGENT.md. SKILL.md repeatedly references many playbooks and runtime files that are not present in the bundle, which is inconsistent with the claimed capability.
!
Instruction Scope
SKILL.md instructs the agent to run ansible-playbook, ssh to remote hosts (using user SSH keys), run curl/jq/ss/grpcurl, build Rust projects with cargo, and clone GitHub repos. The skill metadata declares no required binaries or environment variables, so the runtime expectations (and access to SSH private keys via file paths) are not reflected in the declared requirements.
!
Install Mechanism
There is no formal install spec, but scripts/setup.sh will attempt to auto-install ansible-core via pip/homebrew/apt/dnf which requires package manager privileges. The script also suggests installing solana-cli via a curl command pointing at release.anza.xyz (nonstandard/unknown host) — that external install suggestion is a potential risk if followed without verification.
Credentials
The skill declares no required env vars or credentials. At runtime it will require SSH access to target servers (path to private key or SSH agent) and optionally an ERPC API key for monitoring. Those are expected for remote deployment but the skill does not declare them up front and directs use of local private key files (ansible_ssh_private_key_file), so users should confirm the agent will not persist or leak keys.
Persistence & Privilege
The skill does not request always:true and does not declare system-wide persistence. Autonomous invocation is enabled by default but not combined here with unusual privileges. The skill warns not to store private keys and to confirm destructive actions.
What to consider before installing
This skill purports to include the Ansible playbooks/templates but the package you have is missing them — do not run deployment playbooks yet. Before installing or running: (1) ask the publisher for the actual ansible/ and jinja/ directories or confirm where ~/.slv/template/{version}/ansible/ is populated from; (2) verify any external install URLs (notably the suggested solana install host release.anza.xyz) are legitimate; (3) confirm which binaries will be invoked (ansible-playbook, ssh, curl, jq, ss, grpcurl, cargo) and whether you want the agent to use your SSH key files; (4) run any Ansible actions in --check (dry-run) first and review generated inventory.yml; (5) prefer to manually inspect and run the playbooks on a non-production host until you verify their provenance. If you cannot obtain the missing playbooks/templates or a trustworthy source, treat the skill as untrusted.

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

ansiblevk9722s0bqq8hehmnyctsv9b32d81rh2pblockchainvk9722s0bqq8hehmnyctsv9b32d81rh2pgeyservk9722s0bqq8hehmnyctsv9b32d81rh2pgrpcvk9722s0bqq8hehmnyctsv9b32d81rh2pinfrastructurevk9722s0bqq8hehmnyctsv9b32d81rh2platestvk97adp0rwxmxb2vwn2acvcpvbx83wbfdsolanavk9722s0bqq8hehmnyctsv9b32d81rh2pstreamingvk9722s0bqq8hehmnyctsv9b32d81rh2p
681downloads
4stars
25versions
Updated 1h ago
v0.13.15
MIT-0

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>"}'

Comments

Loading comments...