with one click
validator-manage
// Manage GenLayer validators across testnets using the genlayer CLI. Join, fund, set identity, list, and organize validators per network and owner.
// Manage GenLayer validators across testnets using the genlayer CLI. Join, fund, set identity, list, and organize validators per network and owner.
Write and run fast direct mode tests for GenLayer intelligent contracts.
Use the GenLayer CLI to deploy, interact with, and debug intelligent contracts.
Validate GenLayer intelligent contracts with the GenVM linter.
Write and run integration tests against a GenLayer environment.
Write production-quality GenLayer intelligent contracts. Always pins concrete GenVM runner version hashes and never uses local-only test/latest runner aliases. Covers equivalence principles, storage rules, LLM resilience, and cross-contract interaction.
Interactive wizard to set up a GenLayer validator node on Linux.
| name | validator-manage |
| description | Manage GenLayer validators across testnets using the genlayer CLI. Join, fund, set identity, list, and organize validators per network and owner. |
| user-invocable | true |
| allowed-tools | ["Bash","Read","Grep","Glob","AskUserQuestion"] |
Manage GenLayer validators across testnet networks (asimov, bradbury, etc.) using the local genlayer CLI. Covers listing, joining, funding operators, setting identities, renaming accounts, and producing per-network reports.
genlayer CLI (npm global package)~/.genlayer/genlayer-config.json~/.genlayer/keystores/<name>.jsonvalidators.md# Verify CLI is installed and check version
genlayer --version
# Check current network
genlayer network list
# List available accounts
genlayer account list
Each testnet has its own staking contract. Validators must be joined separately per network. Operator keys should be unique per network (same owner, different operators).
genlayer network set testnet-bradbury
genlayer network info
# Table view with stake, status, weight
genlayer staking validators
# Detailed info for a specific validator
genlayer staking validator-info <validator-address>
genlayer staking validator-join \
--amount "100000gen" \
--operator <operator-address> \
--account "<owner-cli-name>"
Returns the on-chain validatorWallet address.
genlayer account send --account "<owner-cli-name>" <operator-address> <amount>
Requires the owner account, not the operator.
genlayer staking set-identity <validator-address> \
--moniker "GenLayerLabs Validator N" \
--account "<owner-cli-name>"
genlayer account create \
--name "GenLayerLabs Bradbury Validator N" \
--password "<password>" \
--no-set-active
Account names are just filenames in the keystore directory:
mv ~/.genlayer/keystores/"Old Name.json" ~/.genlayer/keystores/"New Name.json"
After renaming, unlock the account under the new name:
genlayer account unlock --account "New Name"
genlayer account show --account "<name>"
genlayer staking epoch-info
genlayer staking active-validators
genlayer staking quarantined-validators
genlayer staking banned-validators
Always use box-drawing tables for terminal output, grouped by network and owner:
═══════════════════════════════════════════════════════════════════════════════════
TESTNET-BRADBURY
═══════════════════════════════════════════════════════════════════════════════════
Owner: 0xAAAA...AAAA (Owner Name) — 100K GEN remaining
┌──────────────────────────┬──────────────────────┬──────────────────────┬────────┐
│ Moniker │ Validator │ Operator │ Status │
├──────────────────────────┼──────────────────────┼──────────────────────┼────────┤
│ Example Validator 1 │ 0xBBBB...BBBB │ 0xCCCC...CCCC │ pending│
└──────────────────────────┴──────────────────────┴──────────────────────┴────────┘
When joining multiple validators:
account create)staking validator-join)account send)staking set-identity)staking validatorsSee the project memory file validators.md for the full mapping of owners, validators, and operators across networks.
See skill.yaml for procedure definition.
See sharp-edges.yaml for common pitfalls.