Practical overview
When it fits
Use it when building a self-hosted Solana transaction path and you want direct leader connections, control over the QoS identity and connection lifecycle, or visibility into individual submission attempts.
Who it is for
- Solana application developers using TypeScript and @solana/kit.
- Teams operating their own transaction-submission infrastructure or staking infrastructure.
- Developers who need per-leader submission telemetry or an alternative to RPC sendTransaction rate limits.
Documented uses
- Send signed transaction bytes directly to upcoming Solana leaders over QUIC.
- Fan out transaction submissions across multiple upcoming leaders.
- Inspect per-leader attempt results, including round-trip times and error kinds.
- Use a supplied identity keypair for stake-weighted QoS identification.
Requirements & limits
The project is a public GitHub repository under the MIT license. The documented library requires Node.js 22.11 or later, ESM, and a native Node.js addon. Cloudflare Workers cannot load the required native binding; Bun and Deno are untested. The README describes Lambda use when the native module is bundled or included in a layer.
- This is a self-hosted library rather than a managed relay; the application operator controls identity and connection lifecycle.
- It does not remove RPC from the documented flow: RPC and RPC subscriptions are used for leader setup, blockhash retrieval and confirmation.
- Stake-weighted QoS depends on supplying an identity keypair; the README explains that the library presents a certificate derived from it.
- The native QUIC addon constrains runtime choices, with Cloudflare Workers unsupported and Bun and Deno untested.
- The repository identifies the project as MIT-licensed and open source.
Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.
Set up a Solana TPU client and submit a transaction
Integrate direct-to-TPU submission into a Node.js TypeScript application, following the documented transfer example.
Before you start
- Node.js 22.11 or later and an ESM project.
- Install solana-tpu-client, @solana/kit, @matrixai/quic and @peculiar/x509; the latter three are peer dependencies.
- RPC and RPC-subscription clients, an identity keypair, and a funded transaction payer. The example also uses @solana-program/system.
- A real recipient address and a transaction with a valid blockhash.
Steps
Install the package and its peer dependencies in the application.
Load a Solana keypair and create RPC and RPC-subscription clients.
Create the TPU client with the RPC clients and identity; build and sign a transaction with @solana/kit.
Convert the signed transaction to bytes, submit and confirm it with the provided factory, then close the TPU client.
Expected outcome
The application has a documented path to submit signed transaction bytes directly to upcoming Solana leaders and obtain a confirmation result with attempt details.
Guide limitations
- The README’s quickstart is a compilable skeleton, not a runnable example as written: the payer must be pre-funded and the recipient replaced with a real address.
- The QUIC dependency uses a native Node.js addon; Cloudflare Workers cannot load it, and Bun and Deno are untested.
- This setup still uses RPC and RPC subscriptions for blockhash retrieval and confirmation.
Sources & review
Source record details
- Source availability
- Active
- Sources checked
- 5 October 2026
- Original website title
- lmvdz/solana-tpu-client · Official homepage title · retained in its source language
Related options
Helius sendSmartTransaction — A hosted transaction-submission option; the README says Helius handles stake-weighted QoS and charges per request or subscription.
Jito bundle endpoint — A hosted bundle-submission option for MEV or priority ordering within a block; the README notes that a tip is required and it targets Jito validators.
Triton Jet — A managed TPU relay listed in the README as a subscription-based alternative.

