Proposal: Add Modular Canton Topology Composer
Draft Proposal: Modular Local Canton Topology Composer
Summary
This PR submits a Canton Development Fund proposal for the Modular Local Canton Topology Composer (canton-compose).
It proposes building a standalone CLI tool that generates runnable, local Canton environments based on a set of curated topology profiles. The tool outputs plain Docker Compose and Canton HOCON bootstrap configurations.
Motivation
Currently, Canton's local tooling (cn-quickstart / LocalNet) ships an excellent but fixed, opinionated topology (a multiplexed single container). Developers who need to test advanced deployment shapes—such as multi-synchronizer contract transfers, sequencer high-availability, or synchronizer-scoped isolation—must hand-write complex HOCON configurations, wire up compose services, and orchestrate bootstrap scripts from scratch. This is an error-prone, undocumented hurdle for advanced application and infrastructure development.
Proposed Solution
canton-compose deterministically generates configurations for 5 specific, tested profiles:
minimaltwo-partytopology-lab(2 participants, 2 independent synchronizers, full mesh)ha-sequencer(1 synchronizer served by 2 sequencer nodes)partitioned(isolated synchronizers with zero overlap)
Non-Goals for the initial funding
- Not a lifecycle manager: It does not wrap
up/downcommands. It just generates the configurations for developers to run via standarddocker compose. - Not a Quickstart replacement: This serves teams testing advanced architectural topologies, not initial onboarding.
- Not a generic wrapper: It embeds Canton-specific domain knowledge to auto-generate valid multi-node
.confsettings.
Funding & Timeline
- Total Ask: 140,000 CC
- Timeline: ~13 weeks across 4 Milestones
- Long-term Value: Milestone 4 includes a funded 12-month maintenance SLA to guarantee generator compatibility with new minor/patch Canton releases, addressing the risk of schema drift.
Reviewer Note
The proposal restricts its scope to generation, keeping it distinct from other proposals that are about the management of the LocalNet. The code extraction and YAML generation guarantees are outlined in the specification section.