跳至主要内容
小龙虾小龙虾AI
🤖

Slv Grpc Geyser

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

下载160
星标4
版本0.10.2
开发工具
安全通过
💬Prompt

技能说明

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

如何使用「Slv Grpc Geyser」?

  1. 打开小龙虾AI(Web 或 iOS App)
  2. 点击上方「立即使用」按钮,或在对话框中输入任务描述
  3. 小龙虾AI 会自动匹配并调用「Slv Grpc Geyser」技能完成任务
  4. 结果即时呈现,支持继续对话优化

相关技能