Kagami is the task-first operator toolbox shipped with Iroha. Use it for guided peer setup, disposable local devnets, Docker Compose generation, genesis work, validator key material, and lower-level inspection utilities.
From anywhere in the repository, run:
cargo build --bin kagamiThis places kagami in target/debug/ from the repository root.
Optional crypto features come from iroha_crypto:
--features gostenables the TC26 GOST R 34.10-2012 parameter sets--features ml-dsaenables ML-DSA helpers--features blsenables BLS validator tooling
Example:
cargo build --bin kagami --features "bls,gost"- Full generated CLI reference: CommandLineHelp.md
- Regenerate the help snapshot:
cargo run -p iroha_kagami -- advanced markdown-help > crates/iroha_kagami/CommandLineHelp.md
New local devnet, guided:
kagami localnet-wizardExisting network / peer config, guided:
kagami wizard --profile nexusDirect disposable localnet, permissioned by default:
kagami localnet --peers 4 --out-dir ./localnetDirect NPoS localnet:
kagami localnet --consensus-mode npos --peers 4 --out-dir ./localnet-nposDocker Compose from an existing config/genesis directory:
kagami docker \
--peers 4 \
--config-dir ./localnet \
--image hyperledger/iroha:dev \
--out-file docker-compose.ymlEd25519 or BLS keys:
kagami keys --algorithm ed25519
kagami keys --algorithm bls_normal --pop --jsonThe generator commands print a concise summary with generated paths, the primary
Torii URL, and exact next commands. localnet and wizard also emit a
generated README.md into the output directory.
kagami localnet-wizard
- Guided disposable devnet flow
- Prompts for peer count, profile, consensus mode, ports, sample assets, and output directory
- Writes genesis, signed genesis, per-peer configs,
client.toml,start.sh,stop.sh, and a generated guide
kagami wizard
- Guided peer/bootstrap flow for configuring a node against an existing profile
- Supports interactive and fully flag-driven non-interactive use
- Writes
config.toml,genesis.json, and a generated guide with the exactirohadlaunch command
kagami localnet
- Bare-metal local network generator
- Defaults to
permissionedunless a Sora profile or perf preset requiresnpos --sora-profile nexusenforces public-dataspace rules and requiresnpos
kagami docker
- Docker Compose generator for an existing config directory containing
genesis.json - Use this after
kagami localnetor after preparing/signing genesis manually
kagami genesis
- Power-user genesis generation, PoP embedding, validation, normalization, and signing helpers
kagami verify
- Profile-aware genesis verification for shipped Iroha 3 profiles
kagami advanced
- Low-level helpers that are not part of the main onboarding path:
client-configs,codec,kura,schema, andmarkdown-help
- Run
cargo xtask kagami-profilesto emit sample bundles foriroha3-dev,iroha3-taira, andiroha3-nexusunderdefaults/kagami/<profile>/ - Each bundle includes:
genesis.jsonverify.txtconfig.tomldocker-compose.ymlREADME.md
iroha3-tairaandiroha3-nexusrequire--vrf-seed-hexwhen generating or verifying NPoS manifests
See docs/source/kagami_profiles.md for the profile-specific defaults.
Generate BLS validator keys and PoPs:
target/debug/kagami genesis pop --algorithm bls_normal --seed seedA --json > popA.json
target/debug/kagami genesis pop --algorithm bls_normal --seed seedB --json > popB.jsonGenerate a genesis JSON:
target/debug/kagami genesis generate \
--ivm-dir ./ivm_libs \
--genesis-public-key ed25519:...Sign with topology and PoPs:
target/debug/kagami genesis sign \
genesis.json \
--topology "$TOPOLOGY_JSON" \
--peer-pop "$PK_A=$POP_A" \
--peer-pop "$PK_B=$POP_B" \
--private-key "$GENESIS_PRIVATE_KEY_HEX" \
--algorithm ed25519 \
--out-file genesis.signed.nrtIroha's streaming control plane always signs messages with an Ed25519 key. If a validator uses another algorithm for its main identity, configure a dedicated Ed25519 streaming identity:
[streaming]
identity_public_key = "ed0120..."
identity_private_key = "802620..."Use kagami keys --algorithm ed25519 to generate that pair.