CLI

What is the Pye CLI

The Pye CLI is an optional feature that automates reward calculation and distribution for validator-issued Lockups. It is designed to run continuously on a small server, monitoring for epoch changes and executing payouts when required. The CLI:

  1. Provides real-time performance and node data for better operational insights (inflation, MEV, and block rewards).

  2. Encodes commercial terms directly on-chain (flat, variable, or cluster-median-based commissions).

  3. Automates accounting and reward distribution.

This infrastructure is currently free - no subscription or fees required.

Getting Started

To get started with the CLI, reach out to the Pye team and one of our incredible Devrels will help you get setup and access to the required repo needed to execute the steps below.

Requirements

Running the Pye CLI requires minimal compute resources. We recommend validator operators run the Pye CLI in seperate server than where your valdiator node is running from.

  • Server: A small, long-running machine (e.g. t3.nano or t3.micro EC2 instance, 2 vCPUs, 4 GB RAM).

    ⚠️ Running multiple instances simultaneously is not supported. Deploy a single dedicated instance per validator.

  • Keypair: A filesystem keypair with sufficient SOL to cover transaction fees and distributions. The required SOL balance depends on the validator’s stake size and expected epoch rewards.

  • Dependencies: Rust toolchain and build utilities.

  • Stable internet connection.

circle-info

The build process may require some compile time depending on your environment, but running the CLI itself is lightweight and does not interfere with validator operations.

Installation

From a fresh Ubuntu host:

The compiled binary will be located at:

Running as a Service

We recommend running the CLI as a persistent systemd service.

Example unit file (/etc/systemd/system/pye-cli.service):

For multiple issuers, provide a comma-separated list in ISSUERS.

Enable and start:

CLI Usage

Run with:

Common Options

Flag
Description

-r, --rpc <RPC>

RPC endpoint. Default: https://api.mainnet-beta.solana.com.

--program-id <PROGRAM_ID>

Pye program ID. Default: PYEQZ2qYHPQapnw8Ms8MSPMNzoq59NHHfNwAtuV26wx.

-v, --vote-pubkey <VOTE_PUBKEY>

Validator’s vote account pubkey.

-i, --issuers <ISSUERS>

Restrict Lockup payments to specific issuers (comma-delimited).

-p, --payer <PAYER>

Path to payer keypair JSON file.

--concurrency <N>

Max concurrent RPC requests. Default: 50.

--dry-run

Calculate rewards without transferring funds.

--cycle-secs <N>

Interval (seconds) between epoch checks. Default: 60.

--block-retry-delay <N>

Retry delay (seconds) for get_block calls. Default: 1800.

-h, --help

Show help.

Notes

  • The CLI automatically calculates and distributes excess rewards for all Lockups associated with the validator.

  • Use --dry-run for testing without sending transactions.

  • Ensure your payer key has enough SOL to cover transfers and fees.

Last updated