Solana Geyser Plugin and Yellowstone gRPC, Explained

Last updated:

Endpoint and plans: Solana RPC endpoint.

At a glance

Symptom details
PropertyValue
GeyserValidator plugin interface, not a client transport
Yellowstone / Dragon's MouthGeyser-based gRPC service and client protocol
SubscriptionSubscribeRequest selects events and filters
Commitmentprocessed, confirmed or finalized; choose explicitly
Replayfrom_slot requires server support and retained data

What you see

Geyser plugin, Yellowstone and Dragon's Mouth often appear together, but describe different layers. Agave defines the interface; Yellowstone supplies a plugin and client-facing gRPC protocol; Dragon's Mouth is the project's service name. Triton maintains the public Yellowstone repository (checked 2026-10-25). An application connects to a service implementing that protocol rather than loading a Geyser library itself. Standard WebSocket (Pub/Sub) remains a separate JSON-RPC interface.

Why this happens

Agave loads a shared library implementing the GeyserPlugin Rust trait, configured through --geyser-plugin-config. Callbacks such as update_account, notify_transaction and update_slot_status expose events to the plugin. Account notifications marked is_startup come from snapshot restoration; they are not a historical transaction replay. The interface does not prescribe a gRPC endpoint: a plugin can instead persist data to a database or another destination. Agave advises keeping callbacks quick and writing to external storage asynchronously so ingestion does not hold back the validator. Yellowstone turns these events into typed protobuf SubscribeUpdate messages delivered through the bidirectional Subscribe RPC. That separates validator integration from the application's network client.

Geyser interface, Yellowstone and WebSocket Pub/Sub

Different integration layers; Agave, Yellowstone and Solana references checked 2026-10-25.
LayerHow you consume itWhat you control or must verify
Geyser plugin interfaceCallbacks inside the validator processPlugin implementation, event handling and persistence
Yellowstone gRPCProtobuf SubscribeRequest / SubscribeUpdateSubscription filters, commitment and server replay support
WebSocket (Pub/Sub)JSON-RPC subscribe calls and subscription IDsMethod-specific payloads, filters and commitment

What to do

  1. Define the events you need before choosing infrastructure. Yellowstone account filters include account addresses, owner, data size and memcmp conditions. Transaction filters include vote, failed, signature, account_include, account_exclude and account_required. Include matches any listed account; required needs every listed account. Check server filter limits rather than assuming every valid request will be accepted.
  2. Select commitment explicitly. Processed reflects the node's processed view and can roll back. Confirmed has a supermajority stake vote; finalized is the strongest confirmation state. Choose according to the cost of acting on a fork. For slot subscriptions, filter_by_commitment controls whether updates are restricted to the selected level. Changing transport does not make a processed event final.
  3. Plan recovery separately from live delivery. The protobuf request has an optional from_slot, but that field alone does not promise replay. Yellowstone's server configuration has replay_stored_slots; its sample sets it to zero. Verify the deployed server's retention and supported request range. Save a durable ingestion checkpoint, reconcile fork-sensitive records and test a disconnect before relying on the stream for complete history.
  4. Use standard WebSocket (Pub/Sub) when its methods fit: accountSubscribe for an account, logsSubscribe for logs or signatureSubscribe for a transaction status. Responses use JSON-RPC subscription IDs and method-specific notifications. Yellowstone provides typed event streams with its own subscription filter model. Both expose commitment-sensitive data; neither transport alone supplies durable storage or repairs a missed interval.
  5. Self-host when you need to change plugin behavior, control persistence or inspect the validator-to-consumer path and can operate the node. Budget for upgrades, compatibility checks, disk and network capacity, monitoring and failure recovery. For setup details, follow the Agave and Yellowstone sources below; this guide is a decision aid rather than a validator installation procedure.
  6. Choose a managed provider when running a validator would distract from your application. Ask which event types and filters are accepted, how concurrent streams are counted, what happens to a slow consumer and whether replay is actually available. Test your real filter and recovery plan. Treat regional availability, support and delivery semantics as selection criteria rather than inferring them from the word Geyser.

When this is not our problem

What Triport adds: a subscription is served by a race between several independent sources, and the client receives the first arriving message. This is service behavior above the Geyser interface, not a change to Solana commitment or a guarantee of complete delivery. When Triport is the wrong choice: you need replay after a disconnect, raw UDP shreds, or a custom plugin running on your own validator. Triport's live Yellowstone streams have no replay buffer; plan gap recovery through JSON-RPC. See the managed Yellowstone gRPC endpoint in Related for service details and the provider comparison for alternatives.

FAQ

Is Geyser the same as Yellowstone?
Geyser defines the validator plugin interface. Yellowstone implements a gRPC service around it. A Geyser plugin may send events somewhere other than gRPC.
Is Dragon's Mouth a different plugin protocol?
The public Yellowstone repository uses the Dragon's Mouth name for its Geyser-based gRPC service. Check the server's documented API and configuration when choosing a compatible client.
Does processed commitment mean a transaction is final?
No. A processed observation can be rolled back. Confirmed and finalized represent stronger confirmation states; choose the state required by your application.
Does from_slot guarantee replay after reconnecting?
No. The server must support replay and still retain the requested data. A protobuf field is not a retention guarantee. Verify the service's recovery policy before depending on it.
Do I need my own validator to consume Yellowstone?
No. A client can subscribe to a managed endpoint. Operating your own node is an option when you need direct control over the plugin and its persistence behavior.

Sources