Overview
The Yellowstone gRPC Geyser plugin is configured via a JSON file passed to the Solana validator with the--geyser-plugin-config flag. This page documents all available configuration options.
Configuration File Structure
Path to the compiled Geyser plugin library file (
.so on Linux, .dylib on macOS).Log Configuration
Logging configuration for the plugin.
Log level:
trace, debug, info, warn, or error.Tokio Runtime Configuration
Configuration for the Tokio async runtime.
Number of worker threads in the Tokio runtime. If not specified, Tokio will use the number of CPU cores.
CPU affinity configuration for threads. Accepts ranges like
"0-1,12-13" to pin threads to specific CPU cores.gRPC Server Configuration
Core gRPC server configuration.
Server bind address(es). Can be:
- Single TCP address:
"0.0.0.0:10000" - Single Unix socket:
"unix:///var/run/geyser.sock" - Array of addresses:
["0.0.0.0:10000", "unix:///var/run/geyser.sock"]
Compression configuration for gRPC messages.
Compression formats accepted from clients. Supported:
"gzip", "zstd".Compression formats used when sending to clients. Supported:
"gzip", "zstd".Maximum size of a decoded message in bytes. Can be specified as a number or string with underscores for readability (e.g.,
"4_194_304").Default is 4 MiB.Capacity of the channel used for accounts from snapshot. When this limit is reached, the sender blocks validator startup.If
null, no limit is applied.Capacity of the client channel, applicable only with snapshot functionality.
Capacity of the channel per connection. Adjust based on expected message throughput.
Maximum number of concurrent unary requests. Default is unlimited (
Semaphore::MAX_PERMITS).Maximum concurrent subscriptions allowed per subscriber ID. Subscribers are identified by the
x-subscription-id header, falling back to the remote IP address.When
false (default), exceeding the subscription limit only logs and emits metrics without rejecting the connection. Set to true to start rejecting connections with RESOURCE_EXHAUSTED status.Enable or disable unary gRPC methods (Ping, GetLatestBlockhash, GetBlockHeight, GetSlot, IsBlockhashValid, GetVersion).
Optional authentication token enforced on all connections via the
x-token header.Maximum size (in bytes) for filter names.
Number of cached filter names before triggering cleanup.
Cleanup interval once filter names reach the size limit. Accepts duration strings like
"1s", "500ms".Number of slots stored for re-broadcast (replay). Set to
0 to disable replay functionality.Number of threads used for parallel message encoding.
Limits for subscription filters. See Filter Limits for detailed configuration.
Enable HTTP/2 adaptive flow control window sizing.
HTTP/2 keepalive ping interval (e.g.,
"30s").HTTP/2 keepalive timeout duration (e.g.,
"10s").Initial HTTP/2 connection window size in bytes.
Initial HTTP/2 stream window size in bytes.
After how many bytes a TCP connection should update its traffic metrics for Prometheus. If not set, uses the default 64KiB threshold.Example:
"64KB", "1MB"Prometheus Configuration
Prometheus metrics server configuration.
Address to bind the Prometheus metrics HTTP server.Metrics will be available at
http://<address>/metrics.Debug Configuration
Collect client filters and processed slot information and make it available on the Prometheus port at
/debug_clients.Useful for debugging subscription issues and monitoring client activity.