Skip to content

Configuration reference

Yano X plugins declare their configuration as typed metadata, not as prose. That metadata is what makes appchain config validate and appchain config explain work, and it is what this page is generated from at documentation build time.

Source: tooling/devtools/src/main/resources/appchain-dx/v1alpha1/appchain-first-party-metadata.json.

PolicyWhat it means
GOVERNED_ACTIVATIONChange only through the supported, approved activation procedure; all members must apply the same committed change.
NEW_CHAIN_REQUIREDThe value is part of chain identity. Changing it requires a new chain; a YAML edit or generic governance action cannot override that constraint.

Anything genesis-selected — a commitment profile, a state encoding, a proof subject descriptor, an enabled state index — falls into this class. See Consensus rules for plugins.

Each property reports how well its constraints are known:

  • FULL — the constraint is verified against the runtime.
  • PARTIAL — derived, but not exhaustively verified. Treat third-party plugin metadata as PARTIAL unless Yano reports FULL, and verify the signed metadata and its runtime-manifest binding before trusting it.
PropertyTypeDefaultAllowedScopeChange policyDescription
yano.app-chain.machines.approvals.on-approved-effect.enabledBOOLEANfalse—CONSENSUS_SHAREDGOVERNED_ACTIVATIONEmit one generic deterministic effect when a proposal is approved
yano.app-chain.machines.approvals.on-approved-effect.expiry-blocksLONG——CONSENSUS_SHAREDGOVERNED_ACTIVATIONGeneric on-approved effect expiry in app-chain blocks
yano.app-chain.machines.approvals.on-approved-effect.gateSTRING—chain-default, app-final, l1-anchored, zk-settledCONSENSUS_SHAREDGOVERNED_ACTIVATIONFinality gate for the generic on-approved effect
yano.app-chain.machines.approvals.on-approved-effect.typeSTRING——CONSENSUS_SHAREDGOVERNED_ACTIVATIONExact executor routing type emitted after approval
yano.app-chain.machines.balances.minterSTRING——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDOptional 32-byte hexadecimal member identity allowed to mint balances
yano.app-chain.machines.kv-registry.value-formatSTRINGrawraw, cbor, utf8CONSENSUS_SHAREDNEW_CHAIN_REQUIREDEncoding accepted by the packaged key-value registry state machine
PropertyTypeDefaultAllowedScopeChange policyDescription
yano.app-chain.machines.composite.evidence-capacity-per-blockINTEGER8—CONSENSUS_SHAREDNEW_CHAIN_REQUIREDMaximum evidence workflows evaluated in one block
yano.app-chain.machines.composite.presetSTRINGevidence-v1-gatedevidence-v1, evidence-v1-gatedCONSENSUS_SHAREDNEW_CHAIN_REQUIREDPackaged deterministic composite profile preset
yano.app-chain.machines.composite.profile-governance.max-epochsINTEGER1024—CONSENSUS_SHAREDGOVERNED_ACTIVATIONMaximum retained composite profile epochs
yano.app-chain.machines.composite.profile-governance.min-activation-lagINTEGER20—CONSENSUS_SHAREDGOVERNED_ACTIVATIONMinimum blocks between profile approval and activation
yano.app-chain.machines.composite.profile-governance.proposal-ttl-blocksINTEGER600—CONSENSUS_SHAREDGOVERNED_ACTIVATIONLifetime of a composite profile proposal
yano.app-chain.machines.composite.profile-modeSTRINGfixedfixed, governedCONSENSUS_SHAREDGOVERNED_ACTIVATIONFixed or governed composite profile evolution
yano.app-chain.machines.composite.roles.maximum-mutation-lifetime-blocksINTEGER1000—CONSENSUS_SHAREDGOVERNED_ACTIVATIONMaximum lifetime of role-governance mutations
PropertyTypeDefaultAllowedScopeChange policyDescription
yano.app-chain.machines.eutxo.bridge.confirmation-observer-idSTRING——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDConfigured exact stable withdrawal-confirmation observer instance
yano.app-chain.machines.eutxo.bridge.epochLONG0—CONSENSUS_SHAREDNEW_CHAIN_REQUIREDBridge migration epoch bound into every withdrawal claim
yano.app-chain.machines.eutxo.bridge.max-pending-withdrawalsINTEGER1024—CONSENSUS_SHAREDNEW_CHAIN_REQUIREDMaximum committed pending withdrawal claims
yano.app-chain.machines.eutxo.bridge.max-withdrawal-lovelaceLONG45000000000000000—CONSENSUS_SHAREDNEW_CHAIN_REQUIREDHard per-claim lovelace withdrawal limit
yano.app-chain.machines.eutxo.bridge.observer-idSTRING——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDConfigured exact vault-deposit observer instance
yano.app-chain.machines.eutxo.bridge.vault-addressSTRING——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDExact Cardano vault address accepted by the EUTxO ledger
yano.app-chain.machines.eutxo.bridge.vault-script-hashSTRING——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDPinned 28-byte bridge vault script hash
yano.app-chain.machines.eutxo.bridge.withdrawal-addressSTRING——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDL2 sink address whose signed outputs become irrevocable withdrawal claims
yano.app-chain.machines.eutxo.bridge.withdrawals-pausedBOOLEANfalse—CONSENSUS_SHAREDNEW_CHAIN_REQUIREDFail-closed consensus switch for new withdrawal claims
yano.app-chain.observers.bridge-deposits.typeSTRINGeutxo-vault-deposit-v1eutxo-vault-deposit-v1CONSENSUS_SHAREDNEW_CHAIN_REQUIREDExact accepted-vault deposit observer type
yano.app-chain.observers.bridge-withdrawals.typeSTRINGeutxo-withdrawal-confirmation-v1eutxo-withdrawal-confirmation-v1CONSENSUS_SHAREDNEW_CHAIN_REQUIREDExact stable Cardano withdrawal-confirmation observer type
PropertyTypeDefaultAllowedScopeChange policyDescription
yano.app-chain.machines.eutxo.bridge.params.fallback-delay-slotsLONG——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDGenesis fallback arming delay in L1 slots (governed thereafter) (ADR-UTXO-009, v3 profiles only)
yano.app-chain.machines.eutxo.bridge.params.fee-basis-pointsLONG——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDGenesis basis-point executor bounty (governed thereafter) (ADR-UTXO-009, v3 profiles only)
yano.app-chain.machines.eutxo.bridge.params.fee-flat-lovelaceLONG——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDGenesis flat executor bounty (governed thereafter) (ADR-UTXO-009, v3 profiles only)
yano.app-chain.machines.eutxo.bridge.params.min-withdrawal-lovelaceLONG——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDGenesis minimum withdrawal payout (governed thereafter) (ADR-UTXO-009, v3 profiles only)
yano.app-chain.machines.eutxo.bridge.params.rooting-blocksLONG——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDGenesis rooting cadence in L2 blocks (governed thereafter) (ADR-UTXO-009, v3 profiles only)
yano.app-chain.machines.eutxo.bridge.params.rooting-secondsLONG——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDGenesis rooting cadence in seconds (governed thereafter) (ADR-UTXO-009, v3 profiles only)
yano.app-chain.machines.eutxo.bridge.params.soft-batch-capLONG——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDGenesis soft settlement batch cap (governed thereafter) (ADR-UTXO-009, v3 profiles only)
yano.app-chain.machines.eutxo.expected-profile-digestSTRING——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDExpected digest of every consensus-relevant EUTxO profile field
yano.app-chain.machines.eutxo.genesis.addressSTRING——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDTestnet address receiving the first no-real-funds genesis allocation
yano.app-chain.machines.eutxo.genesis.inline-datum-hexSTRING——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDOptional canonical lowercase Plutus datum CBOR for genesis output zero
yano.app-chain.machines.eutxo.genesis.l2-addressSTRING——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDKey-controlled L2 address registered without creating virtual funds
yano.app-chain.machines.eutxo.genesis.l2-key-epochLONG1—CONSENSUS_SHAREDNEW_CHAIN_REQUIREDInitial consensus key epoch for the registered L2 Jubjub key
yano.app-chain.machines.eutxo.genesis.l2-public-keySTRING——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDLowercase 32-byte Jubjub public key registered for the initial L2 address
yano.app-chain.machines.eutxo.genesis.lovelaceLONG——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDPositive no-real-funds lovelace allocated to genesis output zero
yano.app-chain.machines.eutxo.profileSTRINGyano-eutxo-v2-plutus-v3yano-eutxo-v1, yano-eutxo-v2-plutus-v3, yano-eutxo-v3-bridge-settlementCONSENSUS_SHAREDNEW_CHAIN_REQUIREDPinned deterministic EUTxO ledger profile
PropertyTypeDefaultAllowedScopeChange policyDescription
yano.app-chain.machines.evidence-registry.issuersSTRING_LIST——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDMember public keys allowed to issue evidence
yano.app-chain.machines.evidence-registry.notification-expiry-blocksLONG0—CONSENSUS_SHAREDGOVERNED_ACTIVATIONEvidence notification effect expiry in app-chain blocks
yano.app-chain.machines.evidence-registry.notify-sendersSTRING_LIST——CONSENSUS_SHAREDNEW_CHAIN_REQUIREDMember public keys allowed to emit notifications
yano.app-chain.machines.evidence-registry.storage-expiry-blocksLONG0—CONSENSUS_SHAREDGOVERNED_ACTIVATIONEvidence storage effect expiry in app-chain blocks
yano.app-chain.machines.evidence-registry.storage-gateSTRINGapp-finalapp-final, l1-anchored, app_final, l1_anchoredCONSENSUS_SHAREDGOVERNED_ACTIVATIONFinality gate required before evidence storage execution

The properties above are the ones Yano X plugins own. Core app ledger configuration — chain id, members, threshold, sequencing, block cadence, storage, API authentication, anchoring, effects caps, retention — belongs to the Yano host and is documented in section 7 of the app ledger user guide.

Frequently needed host values:

PropertyNotes
yano.app-chain.chain-id1–128 valid UTF-8 bytes. One group of participants = one chain id.
yano.app-chain.state-machineThe selected machine or profile id. Consensus-shared.
yano.plugins.directoryWhere bundles are loaded from. Not yaci.plugins.directory.
yano.app-chain.effects.*Enablement and deterministic caps. All consensus-shared — see Effects.
yano.app-chain.anchor.*Anchor leader only — see Cardano anchoring.
yano.app-chain.message.enforce-sender-seqConsensus-visible when on; all members must agree.
Terminal window
# Validate a project's blueprint and its resolved configuration.
./yano.sh appchain config validate --mode project <project>
# What one property means: owner, type, default, scope, and change policy.
./yano.sh appchain config explain yano.app-chain.block.max-bytes
./yano.sh appchain config explain --format json yano.app-chain.block.max-bytes
# The values a node would resolve from its files, with secrets redacted.
./yano.sh appchain config effective --mode resolved \
--config <project>/config/shared-consensus.yaml \
--config <project>/config/nodes/node0.yaml --show-sources
# Compare a project against running nodes.
./yano.sh appchain drift <project> --peer http://127.0.0.1:8080/api/v1/ \
--api-key-env YANO_APPCHAIN_API_KEYS

config explain takes one property and no project. Add --metadata <descriptor|plugin.jar> to explain a property that a plugin declares. It prints UNKNOWN_PROPERTY and the nearest known key for a misspelling. config effective reads only the files you pass with --config, in order, with later files winning; environment variables and system properties are left out unless you add --include-environment or --include-system-properties.

Edit only appchain.yaml; generated runtime files are derived output.

Five secret classes, five blast radii — keep them separate:

  1. member signing keys,
  2. business-actor keys,
  3. API keys,
  4. effect and connector credentials, and
  5. anchor wallet funds.

Never place a credential in consensus-shared configuration or in a replicated effect payload — both are visible to every member and provable to anyone holding a proof. Use node-local overlays or a secret provider, and refer to secrets by documented environment-variable or provider names only.

For private per-node connector configuration, the cluster launcher supports a strictly validated overlay directory (YANO_CLUSTER_NODE_CONFIG_DIR) with chmod 600 files at a fixed precedence ordinal — see the cluster launcher README.