
Bring up the whole stack locally
Disposable beta cluster bring-up
One scripted command creates a throwaway kind cluster running a single-validator Paxeer chain at EVM chain ID 125.
Run beta-cluster.sh up and the script installs the pinned host tools, builds or pulls every image, applies the trusted-boundary manifests, waits for the LayerX node's genesis artifacts, and deploys the settlement contracts through the Paxeer boundary. You get the chain, the node, the boundary, Human, registry and authority services on one machine. Run down and the cluster, its volumes and the local material go away. This is bring-up only, and the limited beta has not opened.
What it does
platform/hosted/tests/beta-cluster.sh up creates a throwaway Kubernetes cluster that runs a single-validator Paxeer chain at EVM chain ID 125 together with the LayerX node, the boundary, Human, registry and authority services. The same run installs the pinned host tools, builds or pulls every image in the shared image table, applies the trusted-boundary manifests, waits for the LayerX node's genesis artifacts, deploys the settlement contracts through the Paxeer boundary, and publishes the resulting GuarantorBond and CheckpointRegistry addresses as ConfigMap layerx-node-settlement. Work products land under build/beta-cluster, including the environment file the hosted smoke test consumes. beta-cluster.sh down deletes the cluster, its persistent volumes and the local material.
Key capabilities
- Creates a kind cluster, default name
layerx-beta, or targets an owner cluster throughLAYERX_BETA_KUBECONFIG. - Initializes a one-validator Paxeer chain and refuses any EVM chain ID other than 125.
- Builds every image from the tracked source tree, or pulls them from GHCR by digest.
- Appends an independent observer full node with its own home, ports and volume.
- Deploys the settlement suite with the zero-delay
immediate-betatimelock profile. - Tears the whole cluster, its volumes and the downloaded tools back down in one command.
Who it's for
Operators and platform engineers who need a full Paxeer X stack on one machine.
Why it matters
A single command produces a complete network: chain, node, boundaries and settlement contracts. It replaces a hand-assembled sequence of services, and teardown removes the network again, so a run leaves nothing behind to reconcile.
Differentiators
The bring-up checks the chain's identity rather than assuming it: it fetches /genesis from both TLS origins, requires byte-identical bodies, requires the X-LayerX-Genesis-SHA256 header to equal the SHA-256 of those bytes, requires the genesis chain_id to equal the CometBFT chain id read from the validator's home, and requires eth_chainId to return 125. The observer node's genesis.json is compared byte for byte against the validator's before its process starts. The guarantor's Ed25519 checkpoint authority key is generated before the Paxeer genesis is built, because deposit_root_authority is genesis state and nothing sets it afterwards.
Outcomes
- A full Paxeer X stack on one machine, from one command
- Teardown removes the cluster, its volumes and the downloaded tools
- Bring-up checks chain identity rather than assuming chain ID 125
Technical notes
- Operator chain:
make platform-test-tooling,make platform-beta-cluster-up,make platform-hosted-smoke,make platform-beta-cluster-down. Make sets.NOTPARALLELwhenupordownis among the goals. Theimagesandpublish-imagescommands are run on the script, not through Make. init-chain.shrefuses anyLAYERX_PAXEER_CHAIN_IDother than 125, becausepaxdmaps EVM chain ID 125 only from the CometBFT chain idhyperpax_125-1. CometBFT RPC and P2P, gRPC and the EVM HTTP listener bind on loopback; the EVM listener is reached through the boundary container. A completed home is marked and skipped, and a partialgenesis.jsonwithout that marker is refused.deploy-contracts.sh bootstraprequires theimmediate-betatimelock profile and runs deploy, permissions, activate, bond and finalize in that order. That profile refuses a chain ID other than 125 and a delay other than zero; the beta input pins the profile and a delay of 0.- One Paxeer StatefulSet replica with a 40Gi
datavolume at/var/lib/paxeer, plus an appended observer container at/var/lib/paxeer-observerwith a second volume, observer RPC on 26667 and P2P on 26666, and its own boundary on port 9444. - Image source is
buildby default orghcr; the GHCR path is kind-only, pulls by digest and retags locally, with tagbetaby default. The publish path requires every name in the shared table to come from one git revision, and verifies each published digest against its signature, SBOM attestation and build provenance before it moves the release andbetatags. LAYERX_BETA_RETAIN_MATERIAL=1reapplies an existing CA, Secrets and ConfigMaps after completeness, ownership, 0600/0700 permission, profile, registry-consistency and live KMS seal digest checks; missing material or a seal mismatch refuses the run. Retained material does not survive teardown.- Not implemented in this path: custody-first genesis. Bring-up waits for the node's genesis artifacts and then runs
deploy-contracts.sh bootstrap, which consumes the deployment descriptor and registration request before prediction and deployment; there is no pre-genesis custody deploy pinned by a signed native genesis. - This is bring-up only. No image, cluster or chain-125 deployment qualification is claimed for it, and a set custody profile is accepted only as a readable, non-symlink regular file of exactly 223 bytes.
- The limited beta has not opened. The gateway API, the faucet and the public
api.paxeer.networkRPC endpoints are documented as unavailable until it does, so this cluster is a local stack, not a route to a live public endpoint.
More in Network
Deterministic replay and divergence halts
Replicas halt instead of serving wrong state
ExploreExternal-chain connections
Reach Ethereum, Solana and IBC chains
ExploreGenesis, import, snapshots and migration
Start a network from signed genesis
ExploreGovernance proposals, parameters and pause
Change parameters by on-chain vote
ExploreBuild on Paxeer.
Give your agent a wallet, set its policy, and settle your first call on LayerX.