Imported from bloxbean/yano-x (
.agents/skills/deploy-showcase-devnet-cluster/SKILL.md). Install upstream withnpx skills add bloxbean/yano-x --skill deploy-showcase-devnet-cluster. Copyright stays with the author.
Deploy Showcase Devnet Cluster
Prepare safely
- Announce that the workflow operates a local three-node cluster.
- Read
AGENTS.md,examples/showcase/DEMO_SHOWCASE.md, and the target'sDEVNET_CLUSTER.mdwhen it exists. - Inspect Yano X and sibling Yano worktrees. Never commit automatically.
- Confirm Java 25,
curl,jq,python3, andunzip. - Treat an existing target as retained identity and data. Never replace, reset, or regenerate it implicitly.
Default retained deployment
- Target:
/Users/satya/Downloads/yano-cluster/devnet-cluster-x - Instance:
devnet-x - HTTP:
7170-7172 - N2N:
14337-14339 - Nodes/threshold:
3/2 - Stores: sibling
chainstate,appchain-chainstate, andappchain-indexersroots per node
These non-default ports allow the older devnet-cluster deployment to run at
the same time.
Build a current archive
Publish the matching Yano Maven artifacts and ordinary JVM ZIP first. Stage
Yano X publications into a new empty internal repository as described by
$build-yano-x, then run:
./gradlew :examples:showcase:test \
:examples:showcase:showcaseScriptContract \
:distribution:jvm:yanoXJvmDistZip \
:examples:showcase:showcaseDistributionContract \
-PinternalRepository=<yano-x-staging> \
-PyanoVersion=<published-yano-version> \
-PyanoJvmDist=/absolute/path/to/yano-<same-build-identity>.zip \
-PuseMavenLocal=true
The archive is
distribution/jvm/build/distributions/yano-x-jvm-<yano-x-version>.zip; the
showcase runs from its examples/showcase/ directory.
Do not overwrite an extracted retained deployment with it. Stage a fresh
archive under a new reviewed target, or make an explicit preservation plan for
the existing data/ and generated configuration.
Operate or create
Resume the retained deployment with:
cd /Users/satya/Downloads/yano-cluster/devnet-cluster-x
./showcase.sh status --instance devnet-x
./showcase.sh up --instance devnet-x
For a new extracted target with no retained identity, run doctor, then:
./showcase.sh quickstart --profile light --nodes 3 --instance <instance>
Use explicit --http-base and --n2n-base values when the default ports are
occupied. Bootstrap SCRIPT anchors only for a new identity or when explicitly
requested:
./showcase.sh anchor bootstrap all --instance <instance>
Run demonstrations with ./showcase.sh run all --instance <instance> or select
the relevant scenario while debugging.
Validate
Run the read-only validator with the target, instance, and first HTTP port:
bash .agents/skills/deploy-showcase-devnet-cluster/scripts/validate_cluster.sh \
/Users/satya/Downloads/yano-cluster/devnet-cluster-x devnet-x 7170
Inspect the first relevant ERROR in each node log if validation fails. Do not
wipe state to make a failure disappear. Leave the cluster running unless the
user asks otherwise.
Identity and proof safety
- Never print seeds, signing material, API keys, or connector credentials.
- Never regenerate a retained chain
genesis-id. - Require identical height/root/profile/genesis/capability-manifest digest on all members. Only node 0 needs the anchor-writer view.
- Reject legacy app-chain derived data below L1
chainstateand any index checkpoint ahead of authoritative app-chain state. - A caller-pinned proof validates mechanics. Describe it as independently L1 anchored only after separately verifying its Cardano transaction/datum.
stoppreserves retained data.reset --yesis destructive and requires an explicit reviewed request.