Chains
Real-network chain nodes
Beyond the test nodes, starskiff ships instance definitions for real networks' nodes. Lifecycle and parameters are identical — the only difference is where the node comes from, per the image-first rule: an official image where a usable one exists, otherwise you inject the source.
Instance.xplad()— XPLA. Runs the officialghcr.io/xpladev/xplaimage (pinned to the mainnet version) by default. EVM + CosmWasm; exposesevmPort/evmUrl.Instance.gaiad()— Cosmos Hub. Runs the officialghcr.io/cosmos/gaiaimage (tags track mainnet exactly) by default. Useful as an IBC counterparty chain.Instance.mantra()— MANTRA. Runs the officialghcr.io/mantra-chain/mantrachainimage (multi-arch, pinned to mainnet) by default. cosmos/evm + CosmWasm; defaults mirror mainnet (mantra-1,eth_chainId5888).Instance.xrplevm()— XRPL EVM. Runs the officialpeersyst/exrpimage (pinned to mainnet) by default. cosmos/evm; defaults mirror mainnet (xrplevm_1440000-1,eth_chainId1440000). SetevmChainIdwhen a custom CosmoschainIdshould use a different EVM JSON-RPC identity. The image is amd64-only — on arm64 hosts pre-pull withdocker pull --platform linux/amd64(runs emulated) or pass abinary.Instance.marood()— maroo. Private node source, so no default image: inject your ownbinary, or a privateimagewhere your CI allows it.network: 'mainnet' | 'testnet'presets select chain id + denoms;testnetmatches viem'smarooTestnet. The maroo module params (agent/eas/pcl/okrw) are seeded at genesis so the maroo precompiles work out of the box; passpolicyAdmin/minterAddressto claim the admin-gated paths.
Instance.xplad(); // official image out of the box
Instance.gaiad(); // official image out of the box
Instance.marood({ binary: 'marood', network: 'testnet' }); // no default image — injection requiredmaroo v0.8+ needs Privacy ZK artifacts during genesis as well as startup. Pass an absolute host directory and starskiff supplies it to every lifecycle command:
Instance.marood({
image: 'maroo:local',
privacyZkArtifacts: {
kind: 'generated-test',
directory: '/absolute/path/to/privacy-zk-test-artifacts',
},
});
Instance.marood({
image: 'maroo:v0.8.0',
privacyZkArtifacts: {
kind: 'release',
directory: '/srv/maroo/privacy-zk/v0.8.0',
},
});generated-test selects maroo's test-only circuit identity and therefore
requires a test-tag build. release forces production/strict mode and clears
that test opt-in. Docker gets a read-only mount; a local binary receives the
host path directly. Starskiff only validates the path shape and existence—maroo
remains responsible for strict artifact validation. Omit privacyZkArtifacts
for a self-contained image that already carries the artifacts and environment.
policyAdmin and minterAddress are unset by default — pass them to claim the PCL precompile's admin methods and the OKRW mint/burn paths:
Instance.marood({
image: 'your-registry/marood:private',
policyAdmin: 'maroo1...',
minterAddress: 'maroo1...',
});Missing a chain? Define it in a few lines with cosmosBase / cosmosEvmBase.