Yano X is the JVM extension and application ecosystem for Yano.
Start with the local showcase, configure your own application, or follow the VM operator guide. The deployment guide connects these paths, including how to add a chain while preserving existing state.
Reusable Yano X libraries are published to
Maven Central under
org.yanoproject.x; yano-x-bom aligns them with the matching Yano host.
From the next release on, releases are also in
https://repo.bloxbean.org/maven/releases, with the same files as on Maven Central. Runtime plugin bundles, CLI tools and the
distributions ship in the GitHub release instead.
Development snapshots are in the BloxBean Maven repository under the snapshot
version of the main branch, for example 0.1.0-pre4-SNAPSHOT. Each
publication adds a newer build of that version; Gradle checks for it once a day,
or at once with --refresh-dependencies.
repositories {
mavenCentral()
// Development snapshots:
maven {
url = uri('https://repo.bloxbean.org/maven/snapshots')
mavenContent { snapshotsOnly() }
}
}
dependencies {
// yanoXVersion: a release from Maven Central, or the snapshot version.
implementation platform("org.yanoproject.x:yano-x-bom:${yanoXVersion}")
implementation 'org.yanoproject.x:yano-x-client'
}See modules and artifacts for every published coordinate.
The build instructions below are for contributors and release preparation.
The build consumes published Yano artifacts and the matching ordinary Yano JVM
ZIP. For a released yanoVersion, Gradle downloads and caches the ZIP from the
matching bloxbean/yano GitHub release. yanoJvmDist remains an explicit
override for local or staged builds. The build does not invoke tasks in, copy
sources from, or assume the location of a Yano checkout.
For a released Yano version:
./gradlew distributionCheck \
-Pversion=<yano-x-version> \
-PyanoVersion=<released-yano-version>During the repository split, first publish the matching Yano checkout to Maven Local and create its ordinary JVM ZIP. No special base ZIP is required:
./gradlew publishToMavenLocal :app:yanoDistZip \
-PskipSigning=true --no-parallelThen pass the exact published version and ZIP to Yano X:
./gradlew distributionCheck \
-PuseMavenLocal=true \
-Pversion=<published-yano-version> \
-PyanoVersion=<published-yano-version> \
-PyanoJvmDist=/absolute/path/to/yano-<build-identity>.zipThe default ./gradlew build -PskipSigning=true and the focused
distributionCheck tier produce one release archive,
distribution/jvm/build/distributions/yano-x-jvm-<version>.zip. It contains
the standard Yano JVM distribution, 17 conflict-free default plugin bundles
under plugins/, the alternative eUTxO ZK runtime under optional-plugins/, a
checksummed manifest covering all 18 runtime plugin bundles, the command-line
and deployment tools, App-Chain Studio, and Yano/Yano X identity manifests.
The multi-node showcase ships inside the same archive. Extract it and run
examples/showcase/showcase.sh quickstart --profile light --nodes 3 --instance demo.
See distribution instructions for prerequisites
and lifecycle commands. The GitHub release attaches this archive and, for users
who need only one part, the standalone plugin pack, deployment tool, and Studio
archives.
Yano X is JVM-only. verifyJvmOnlyBuild rejects native-image build or
distribution tasks, while the Yano base ZIP contract records whether its
plugin directory is supported.
mavenLocal() is disabled unless useMavenLocal=true. A missing release asset,
a ZIP whose root build identity differs from yanoVersion, or Maven artifacts
from another Yano version fail verification.
Distributions use the dependency-complete bundle outputs that are attached to
Yano X's Maven publications, so ./gradlew clean build does not first need to
resolve the project's own artifacts. CI also stages all publications in an
empty, build-scoped Maven repository using -PinternalRepository=<path>. Set
-PyanoRepository=<URL-or-path> when the requested Yano version is in a staging
repository rather than Maven Central; this read-only input is distinct from the
build-scoped Yano X publication repository. Yano development snapshots, such as
-PyanoVersion=0.1.0-pre18-1a2b3c4-SNAPSHOT, resolve from the BloxBean Maven
repository (https://repo.bloxbean.org/maven/snapshots) without it.
Release rehearsal must disable Maven Local and pin every input explicitly. For an empty build-scoped repository, run the clean build and publication gates:
./gradlew clean build \
-Pversion=<yano-x-version> \
-PyanoRepository=/absolute/path/to/yano-staging \
-PyanoVersion=<staged-yano-version> \
-PyanoJvmDist=/absolute/path/to/yano-<build-identity>.zip \
-PuseMavenLocal=false
./gradlew publishAllPublicationsToInternalRepository \
-Pversion=<yano-x-version> \
-PinternalRepository=/absolute/path/to/yano-x-staging \
-PyanoRepository=/absolute/path/to/yano-staging \
-PyanoVersion=<staged-yano-version> \
-PuseMavenLocal=falseBoth release ZIPs contain LICENSE and a normalized CycloneDX 1.6 SBOM under
sbom/. Distribution verification rejects missing license metadata for any
external Maven component. The combined JVM ZIP also preserves Yano's license as
LICENSE.yano and its host SBOM as sbom/yano.cdx.json.
The default plugin directory is an activatable selection, not an indiscriminate
copy of every published alternative. The standard eUTxO runtime and the eUTxO
ZK runtime both intentionally provide app-state-machine/eutxo-ledger; to use
the ZK implementation, remove the standard eUTxO ledger bundle and copy the ZK
runtime bundle from optional-plugins/ into plugins/ on every member. Validate
the resulting set with tools/yano-plugins/bin/yano-plugins validate plugins/*.jar.
The public documentation site lives in www/ and is published at
yano-x.io. It covers app-chain concepts, a build-and-run
quickstart, the plugin framework, the generated recipe/capability/configuration
catalogs, the imported tutorials, and an AI ingestion layer
(/llms.txt, /llms-full.txt, /ai/starter-pack.md, /ai/catalog.json).
cd www && npm ci && npm run devIt is built from the markdown in docs/, which remains the source of
truth: the site imports the tutorials and state-machine references at build
time and links to the rest.
See ADR-038 for its content strategy.
See Build and test,
distributions, and the
app-chain documentation index for the independent
Yano X workflows. The Java package namespace remains
org.yanoproject.x.*; the repository split does not rename
the app-chain technical domain.