Open-source tooling for Canton Network applications.
packages/common: shared Canton JSON API client, logger, scheduler, health server, and env helperspackages/protocol-automation: scheduled choice execution service for Canton contractspackages/earnings-indexer: external-event indexer that matches source data to ledger contracts and exercises update choices
Canton applications usually need off-ledger service code for routine operations:
- Canton has no on-chain cron, so scheduled maintenance choices need an external worker.
- Canton applications often need derived state from external systems, and there is no single canonical earnings field you can rely on across deployments.
- Teams routinely need a production-grade Canton JSON API v2 client reference with Keycloak OIDC, package resolution, active-contract queries, and choice exercise flow.
This repository packages those patterns as small Node.js services with a shared client layer and concrete example jobs based on Helix contracts.
- Node.js 18+
- A Canton JSON API v2 participant endpoint
- A Keycloak OIDC client that can use client-credentials flow
- An act-as party with permission to query and exercise the target contracts
cd packages/protocol-automation
npm install
cp .env.example .env
node --env-file=.env src/index.jscd packages/earnings-indexer
npm install
cp .env.example .env
node --env-file=.env src/index.jsTo run the smoke test in mock mode:
cd packages/earnings-indexer
bash smoke-test.shcanton-tools/
├── README.md
├── LICENSE
└── packages/
├── common/
├── protocol-automation/
└── earnings-indexer/
The protocol and indexer packages intentionally keep Helix template names, choice names, and payload field references in the example job files. The goal is readability: developers can see a concrete Canton service implementation, then adapt the example to their own contracts.
Built by Helix Labs for the Canton Network.
Apache 2.0. See LICENSE.