Hi all,
We open-sourced Canton Lens, a web explorer for the ledger data visible to a Canton participant. It is Apache-2.0 and reads the JSON Ledger API v2 and nothing else.
The explorers most people link to focus on network-level Global Synchronizer data — validators, governance, CC transfers. This is the other half: the contracts and updates your participant can actually see.
Ledger visibility follows the Canton identity and ledger rights used for each request, so two ledger users on the same participant can legitimately see different screens. Canton Lens does not try to merge those views.
Inspecting this data usually means using Daml Shell over PQS, querying PQS directly, or working with the Ledger API using curl, jq, or custom scripts. We wanted a dedicated explorer that makes participant-scoped ledger data easier to inspect and navigate.
What you can inspect
-
Overview — ledger position, visible contracts, token kinds, pending offers, recent activity at one snapshot offset
-
Transactions and contracts — update events, active contract payloads, signatories, observers, decoded template fields and choices
-
Parties and tokens — party relationships, Splice token holdings, transfer instructions, preapprovals
-
Timeline — contract creation and archival across a range of ledger offsets
-
Developer tools — installed Daml-LF packages, template definitions, participant status, OpenAPI document
The React UI and backend API are independently runnable. The backend serves an OpenAPI document at /openapi.json if you only want the API.
Two built-in authentication profiles
-
Browser OIDC — per-user browser PKCE login; each request carries that user’s own access token
-
Shared Identity — one Canton service identity held by the backend via client credentials; no Ledger API access token reaches browser JavaScript, and issued tokens are cached in memory only
For deployments that need per-user access while keeping the Ledger API token server-side, the repository also documents an Institution BFF setup. The BFF itself is operated by the institution and is not part of Canton Lens.
What it does not do
The JSON Ledger API serves current state and update history retained by the participant. Canton Lens does not maintain a separate historical index, so it does not provide durable full history or full-text search.
Recent-activity and timeline views intentionally cover bounded offset ranges, and data pruned from the participant is no longer available through its Ledger API. Serving deeper historical queries requires a separate store fed from the ledger, such as PQS. We may add this later for Shared Identity deployments.
Shared Identity mode does not authenticate individual users — every viewer sees the same lens, and access control is the operator’s responsibility.
Repo: GitHub - dsrvlabs/canton-lens
License: Apache-2.0
Any feedback would be appreciated — especially from people running Canton participants in production or internal environments.
