Files
zeekayandHanzo AI 2453240bd7
Universe CI / Resolve Environment (push) Waiting to run
Universe CI / Update Manifest (push) Blocked by required conditions
Universe CI / E2E (push) Blocked by required conditions
CI/CD / render (push) Waiting to run
chain letters are lowercase
The primary-network chains answer to either case; one spelling beats two.
/v1/chain/c/rpc, /v1/chain/p, /v1/chain/x across the estate.

Co-authored-by: Hanzo AI <[email protected]>
2026-09-08 15:28:19 -07:00

113 lines
3.6 KiB
YAML

# ZooNetwork CR — Zoo validator cluster on Lux primary network.
#
# Each env overlay (zoo-mainnet, zoo-testnet, zoo-devnet) patches:
# spec.networkId — Lux primary networkID (1/2/3)
# spec.validators — replica count
# spec.image.tag — semver pin (NEVER floating)
# spec.config — flat map → ZOO_* env vars on the StatefulSet
# including BOOTSTRAP_IPS / BOOTSTRAP_IDS / TRACK_CHAINS
#
# Operator controller (Rust): src/controller.rs::create_network.
# CRD struct: src/crd.rs::ZooNetworkSpec.
apiVersion: zoo.network/v1alpha1
kind: ZooNetwork
metadata:
name: zoo-chain
labels:
app: zoo-chain
app.kubernetes.io/name: zoo-chain
app.kubernetes.io/part-of: zoo
spec:
networkId: 1
validators: 0
# zooai/node (zood) — the Zoo Network node. Replaces the ghcr.io/luxfi/node
# (luxd) stopgap: luxd is a bare subnet runtime with no Zoo EVM and no AI
# precompiles, so it could only ever track Beluga as an inert subnet stub.
# zood self-installs the Zoo EVM (AI/FHE/PQ/ZK precompiles, incl. the 0x0303
# in-consensus inference precompile + the 0x0304 aivmbridge), Zoo DEX and Zoo
# FHE VMs at startup, so the validators can actually instantiate the Beluga
# L3 (chainId 420420) and the Zoo L2 EVM (200200) as real chains.
# Tag is pinned to an immutable ghcr.io/zooai/node semver by CI (hanzo.yml →
# hanzoai/ci); overlays pin the live tag. NEVER a floating tag in prod.
image:
repository: ghcr.io/zooai/node
tag: 0.2.0
pullPolicy: IfNotPresent
storage:
storageClass: do-block-storage
size: 100Gi
resources:
cpuRequest: "1"
cpuLimit: "4"
memoryRequest: 2Gi
memoryLimit: 8Gi
ports:
http: 9630
staking: 9631
service:
serviceType: ClusterIP
metrics:
enabled: true
port: 9090
# Flat key/value map → ZOO_<KEY_UPPERCASED> env vars on each validator pod.
# The image's entrypoint translates these into luxd CLI flags.
config: {}
---
apiVersion: zoo.network/v1alpha1
kind: ZooChain
metadata:
name: zoo-evm
labels:
app: zoo-chain
app.kubernetes.io/part-of: zoo
spec:
chainId: 200200
networkRef: zoo-chain
---
apiVersion: zoo.network/v1alpha1
kind: ZooExplorer
metadata:
name: zoo-explorer
labels:
app: zoo-explorer
app.kubernetes.io/part-of: zoo
spec:
chainRef: zoo-evm
image: ghcr.io/luxfi/explorer:1.2.18
# Namespace-relative on purpose: the CR is deployed into zoo-<env>, and there
# is no `zoo` namespace on the cluster, so the old
# zoo-chain-rpc.zoo.svc.cluster.local never resolved — the indexer logged
# `no such host` every 30s and indexed zero blocks.
# The path still names the Zoo EVM, and on zoo-devnet nothing answers it yet:
# platform.getBlockchains on that validator returns only the Lux
# primary-network chains, and ZooChain zoo-evm carries no blockchainId, i.e.
# the Zoo devnet EVM has never been created. Do NOT repoint this at
# /v1/chain/c/rpc to make it respond — C-Chain is Lux's primary EVM and no
# other network uses it. zoo-testnet/zoo-mainnet override with their own
# tracked blockchainID, which is what this becomes once devnet has one.
rpcEndpoint: http://zoo-chain-rpc:9630/v1/chain/zoo/rpc
chainName: zoo
coinSymbol: ZOO
service:
serviceType: ClusterIP
port: 8090
---
apiVersion: zoo.network/v1alpha1
kind: ZooGateway
metadata:
name: zoo-gateway
labels:
app: zoo-gateway
app.kubernetes.io/part-of: zoo
spec:
networkRef: zoo-chain
hosts:
- api.zoo.network
tls:
enabled: true
secretName: zoo-network-tls
service:
serviceType: ClusterIP
rpcPort: 9630
wsPort: 9631