For Validators
The svmgov CLI provides validators with commands to create and manage governance proposals, support other validators’ proposals, and cast stake-weighted votes.
New to governance terms? Read Terminology first, then continue with command guides.
Requirements
- Solana validator identity keypair
- Minimum 100,000 SOL staked to create a proposal
- Any active stake to support a proposal or vote
- Access to a Solana RPC endpoint
- Operator API URL for fetching Merkle proofs. The CLI defaults to the main NCN router:
https://ncn-governance.solana.com.
Quick Setup
# Clone the repo and check out the latest release tag
git clone https://github.com/solana-foundation/solana-governance.git
cd solana-governance
git checkout "$(git describe --tags --abbrev=0 --match 'v*')"
# Build and install svmgov
cd svmgov/cli && ./install.sh
# Run interactive setup
svmgov init
# Optional: override the default operator API URL
svmgov config set operator-api-url https://your-operator-api.example.comRelease tags are named v<version> (for example v0.4.0-40100) and match the svmgov crate version. The git checkout above resolves the newest one for you, leaving you on a detached HEAD — expected, and fine for building. To build a specific version instead, pick its tag from Releases and check that out by name. main is the development branch and can sit ahead of the latest release, so prefer a tag unless you need an unreleased change.
Available Commands
Global Arguments
All validator commands support:
| Option | Short | Env var | Description |
|---|---|---|---|
--keypair <PATH> | -k | SVMGOV_KEY | Path to validator identity keypair JSON |
--rpc-url <URL> | -r | SVMGOV_RPC | Solana RPC endpoint |
--network <NETWORK> | -n | — | Network for verifier/proof fetching |
Resolution order: explicit flags → environment variables → config file → built-in defaults
Configuration File
~/.svmgov/config.toml — set once via svmgov init:
user_type = "Validator"
identity_keypair_path = "/path/to/validator.json"
network = "mainnet"
rpc_url = "https://api.mainnet-beta.solana.com"
operator_api_url = "https://ncn-governance.solana.com"The operator_api_url defaults to the main NCN router, https://ncn-governance.solana.com, for commands that fetch Merkle proofs (support-proposal, cast-vote, modify-vote). Override it with svmgov config set operator-api-url <URL> only if you need a different verifier/router.