CLI Arguments Reference
Complete reference for all svmgov CLI command-line arguments and configuration.
Global Arguments (All Commands)
| Option | Short | Env Var | Description |
|---|---|---|---|
--keypair <PATH> | -k | SVMGOV_KEY | Path to signer keypair JSON |
--rpc-url <URL> | -r | SVMGOV_RPC | Solana RPC endpoint |
--network <NETWORK> | -n | — | Network for verifier/proof fetching; overrides config |
--squads <PUBKEY> | — | — | Route supported admin transactions through this Squads multisig |
--squads-vault-index <U8> | — | — | Squads vault index; defaults to 0 |
--squads-memo <TEXT> | — | — | Optional memo for the Squads vault transaction |
--squads-program-id <PUBKEY> | — | — | Override the canonical Squads program ID |
Resolution order: explicit flags → env vars → config file → built-in defaults
Configuration File
Path: ~/.svmgov/config.toml
user_type = "Validator" # or "Staker"
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 default operator_api_url is the main NCN router.
Config Commands
svmgov config show # Show entire config
svmgov config get <key> # Get one value
svmgov config set <key> <value> # Set one valueSettable Keys
| Key | Description |
|---|---|
network | Default network (mainnet, testnet, devnet) |
rpc-url | Default Solana RPC URL |
operator-api-url | Verifier service or router URL for proof fetching. Defaults to the main NCN router, https://ncn-governance.solana.com; override only if you run a different verifier/router. |
identity-keypair | Validator identity keypair path |
staker-keypair | Staker keypair path |
Basis Points
All vote allocations use basis points (bp):
| Basis Points | Percentage |
|---|---|
10,000 | 100% |
7,000 | 70% |
5,000 | 50% |
1,000 | 10% |
1 | 0.01% |
When voting, for_votes + against_votes + abstain_votes must equal exactly 10,000.
Validator Command Arguments
create-proposal
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
--title | String | Yes | — | Proposal title; byte length must be ≤ configured max_title_length and ≤ 200 |
--description | String | Yes | — | GitHub URL (https://github.com/...); byte length must be ≤ configured max_description_length and ≤ 500 |
--network | String | No | Config value | Network for proof fetching |
--seed | u64 | No | Random | PDA derivation seed |
support-proposal
| Argument | Type | Required | Description |
|---|---|---|---|
--proposal-id | String | Yes | Proposal PDA (base58) |
--network | String | No | Network override |
cast-vote / modify-vote
| Argument | Type | Required | Description |
|---|---|---|---|
--proposal-id | String | Yes | Proposal PDA (base58) |
--for-votes | u64 | Yes | Basis points For (0–10,000) |
--against-votes | u64 | Yes | Basis points Against (0–10,000) |
--abstain-votes | u64 | Yes | Basis points Abstain (0–10,000) |
--network | String | No | Network override |
--close-timestamp | i64 | No | (cast-vote only) Unix timestamp after which the MetaMerkleProof PDA may be closed permissionlessly. Defaults to the proposal’s vote-expiry time |
finalize-proposal
| Argument | Type | Required | Description |
|---|---|---|---|
--proposal-id | String | Yes | Proposal PDA (base58) |
list-proposals
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
--status | String | No | — | Filter: active, support, finalized |
--limit | usize | No | — | Max results |
--json | flag | No | false | Output JSON |
proposal
| Argument | Type | Required | Description |
|---|---|---|---|
<PROPOSAL_ID> | String | Yes | Proposal PDA (base58, positional) |
Staker Command Arguments
cast-vote-override / modify-vote-override
| Argument | Type | Required | Description |
|---|---|---|---|
--proposal-id | String | Yes | Proposal PDA (base58) |
--for-votes | u64 | Yes | Basis points For (0–10,000) |
--against-votes | u64 | Yes | Basis points Against (0–10,000) |
--abstain-votes | u64 | Yes | Basis points Abstain (0–10,000) |
--stake-account | String | Yes | Stake account pubkey (base58) |
--vote-account | String | Yes | Validator vote account pubkey (base58) |
--network | String | No | Network override |
--staker-keypair | String | Yes | Staker keypair path |
--close-timestamp | i64 | No | (cast-vote-override only) Unix timestamp after which the MetaMerkleProof PDA may be closed permissionlessly. Defaults to the proposal’s vote-expiry time |
Admin Command Arguments
init-global-config
| Argument | Type | Required | Description |
|---|---|---|---|
--max-title-length | u16 | Yes | Maximum proposal title bytes |
--max-description-length | u16 | Yes | Maximum proposal description bytes |
--max-support-epochs | u64 | Yes | Maximum support phase epochs |
--min-proposal-stake-lamports | u64 | Yes | Minimum stake required to create a proposal |
--cluster-support-pct-min-bps | u64 | Yes | Support threshold in basis points |
--discussion-epochs | u64 | Yes | Discussion phase epochs |
--voting-epochs | u64 | Yes | Voting phase epochs |
--snapshot-epoch-extension | u64 | Yes | Epoch extension used when computing the snapshot slot |
--snapshot-slot-offset | i64 | Yes | Slot offset from the target epoch start slot |
update-global-config
Same fields as init-global-config, but every field is optional and only supplied values are changed.
nominate-admin / accept-admin
| Command | Argument | Required | Description |
|---|---|---|---|
nominate-admin | --new-admin <PUBKEY> | Yes | Pending admin that must later accept |
accept-admin | — | — | Must be signed by the pending admin |
Last updated on