Skip to content

Quickstart

merobox is a Python CLI that boots real Calimero (merod) nodes — as Docker containers by default — and drives them through declarative YAML workflows. This page takes you from an empty machine to a running two-node cluster and a first passing workflow.

  • Docker running locally (the default backend runs each node as a container). Binary mode (--no-docker) is available if you have a local merod build — see node management.
  • Python 3.9+ if you install from PyPI or source.
Terminal window
pipx install merobox
Terminal window
merobox --version

If that prints a version, you are ready. merobox --help lists every command.

Terminal window
merobox run --count 2

This starts two Docker containers named calimero-node-1 and calimero-node-2. Each node opens a libp2p swarm port and an HTTP server / RPC port, allocated per node from an auto-detected base (override with --base-port / --base-rpc-port). See node management for the full set of run flags.

Terminal window
merobox health

merobox health polls each running node’s admin API (/admin-api/health, /admin-api/is-authed, /admin-api/peers) and prints a table of health status, auth state, and connected-peer count. Target a single node with merobox health --node calimero-node-1, or add --verbose for raw responses.

A workflow is a YAML file describing nodes and an ordered list of steps. The repository ships runnable examples under workflow-examples/. Run one:

Terminal window
merobox bootstrap run workflow-examples/workflow-groups-example.yml

This boots the nodes the file declares, then executes each step in order — installing an app, creating a namespace and context, inviting the second node, and verifying that state syncs between the two. The process exits non-zero the moment any step fails.

Two flags worth knowing early:

Terminal window
# Validate the YAML without starting anything — a fast lint for CI
merobox bootstrap run workflow-examples/workflow-groups-example.yml --dry-run
# Generate a starter workflow to edit
merobox bootstrap create-sample

Ready to build one yourself? The first workflow tutorial walks through writing one step by step.

Terminal window
# Stop every running node (and the auth stack, if any)
merobox stop --all
# Or stop just one node
merobox stop calimero-node-1

stop leaves each node’s data on disk (under ./data/<node-name>/) so a restart keeps its identity and state. To wipe that data for a completely fresh start, use nuke: