Skip to content
CCPEDIAby Unity Nodes
Documentation/Canton Network Docs/Deep DivesQuickStartView on Canton Network Docs

QuickStart FAQ

System requirements & setup

Have the best technologies been selected for the CN App Quickstart?

The Quickstart is designed to help teams become familiar with Canton Network (CN) application development by providing scaffolding to kickstart development. Quickstart is intended to be incrementally extended by you to meet your specific business needs. Once you are familiar with the Quickstart, please review the technology choices and the application design to determine what changes are needed - technology and design decisions are ultimately up to you. Please be aware that the Canton Network Application Quickstart (CN App Quickstart) is a rapidly evolving work in progress.

What are the minimum system requirements to run CN App Quickstart LocalNet?

The CN App Quickstart requires Docker Desktop with at least 8 GB of memory allocated to run LocalNet properly. If your machine has less memory, consider declining Observability when prompted during setup.

Which browsers are supported for running CN App Quickstart?

Chrome, Edge, and Firefox are recommended. Safari requires mapping app-provider.localhost in /etc/hosts first. You may also use the same browser with one user in incognito mode and the other in standard mode.

Where can I install CN App Quickstart dependencies?

This repository uses direnv, nix, and docker-compose to provide development dependencies:

Do I need to install Nix?

You can use the project files in the quickstart directory as a standalone project without nix, but you will need to provide binary dependencies manually. We do not offer guidance on how to do this, but you can find the required binaries in nix/shell.nix.

Should I build with make or gradle?

The gradle daemon has been disabled to prevent parallel processing of transcodegen. Gradle tasks had been known to create order and concurrency issues which caused files to get cleaned too early. Always prefer to use the make commands.

What Daml SDK version should I use?

See the Version Compatibility Dashboard for the versions deployed on each network. For a new project, use the versions currently on DevNet.

How do I obtain Splice contract DAR files?

All Splice DARs are available in the Splice repository.

What version of the Java SDK does the CN Quickstart use?

The CN App Quickstart uses Java SDK version Eclipse Temurin JDK version 21. This information is specified in quickstart/compose.yaml and .env, respectively. quickstart/compose.yaml
services:
backend-service:
   image: "eclipse-temurin:${JAVA_VERSION}"
.env JAVA_VERSION=21-jdk

Common issues & troubleshooting

How can I check if my CN App Quickstart deployment is running correctly?

Use make status to see all running containers and their health status.

What should I do if containers show as “unhealthy” after startup?

The most common cause is insufficient memory allocation to Docker. Try:
  1. Increase Docker memory allocation to at least 8 GB
  2. Run make stop; make clean-all
  3. Run make setup and turn off observability
  4. Restart with make start

How can I monitor system metrics?

You can use Grafana at http://localhost:3030/ to monitor system metrics if observability is enabled. For more information see the Observability and Troubleshooting Overview.

What should I do if I need to completely reset my environment?

Execute the following commands in order:
  1. make stop
  2. make clean-all
  3. make setup (to reconfigure environment options)
  4. make start

How do I resolve “Couldn’t find env file” in make build?

If you receive an error message such as:
Couldn't find env file: /Users/USER/development/canton/cn-quickstart/quickstart/.env.local
make: \**\* [build-docker-images] Error 15
make build and make start create .env.local; other targets such as make status or make stop do not. Run make setup to create it.

Development & testing

How do I access the Daml Shell for debugging?

Run make shell from the quickstart directory. This provides access to useful commands like:
  • active - shows summary of contracts
  • active quickstart-licensing:Licensing.AppInstall:AppInstallRequest - shows AppInstallRequest contract details
  • contract [contract-id] - shows full contract details

How can I monitor application logs and traces?

The CN App Quickstart provides several observability options:
  1. Direct container logs: docker logs \<container-name\>
  2. Grafana dashboards: http://localhost:3030/
  3. Consolidated logs view in Grafana

Why do backend configurations disappear after restarting the backend service?

Backend service configurations (including tenant registrations, application state, and service registrations) are stored in memory and lost when the service is restarts. Run make restart-backend to rebuild and restart the backend service with configurations restored. Persistent storage is in our roadmap, but has not been implemented yet.

How can I resolve a backend build failure?

Build failures may occur if .env is misconfigured. If you see errors on make build such as:
> Task :backend:extractProto FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':backend:extractProto'.
> Could not resolve all files for configuration ':backend:protobuf'.
   > Could not find com.daml:ledger-api-proto:.
   Required by:
         project :backend
Then verify that the .env file contains an accurate daml SDK value in DAML_RUNTIME_VERSION=.

Infrastructure & environment

What’s the difference between LocalNet and DevNet deployment?

LocalNet runs everything locally including a Super Validator and Canton Coin wallet, making it more resource intensive but self-contained. make start deploys LocalNet only. To run against DevNet, you operate an external splice-node validator and start the DevNet module separately; see Deploy the Quickstart to DevNet. DevNet connects to the Global Synchronizer operated by Super Validators and requires SV sponsorship and VPN access. For more information see the Project Structure Overview.

What is ScratchNet?

ScratchNet is a persistent Canton Network environment that supports team collaboration while maintaining centralized control. It fills the gap between a single-developer LocalNet (constrained by one laptop’s resources) and a fully decentralized DevNet (maintained by Super Validators). Development teams typically deploy ScratchNet on a shared server to enable longer-running instances with persistent data storage across development sessions.

How can I find out the migration_id of DevNet?

curl -s https://docs.dev.global.canton.network.sync.global/info | jq '.synchronizer.active.migration_id'

Do I need VPN access to use CN App Quickstart?

No. VPN access is only required for DevNet connections. LocalNet does not require VPN access.

What will I need when I am ready to connect to DevNet?

To connect to CN DevNet you need access to a SV Node that is whitelisted on the CN. Contact your sponsoring Super Validator agent for connection information.

How do I log in with Keycloak?

The CN App Quickstart uses Keycloak for authentication when OAUTH2 is enabled. If you have issues with logging in with Keycloak credentials, you may begin troubleshooting by running make status to verify the Keycloak service is running. Keycloak should show healthy.
keycloak   quay.io/keycloak/keycloak:26.1.0 "/opt/keycloak/bin/k…"
keycloak   ## minutes ago Up ## minutes (healthy) 8080/tcp, 8443/tcp, 9000/tcp
Keycloak credentials are set in docker/modules/keycloak/env/app-user/on/oauth2.env with the following credentials:
Username: AUTH_APP_USER_WALLET_ADMIN_USER_NAME (e.g. app-user)
Password: AUTH_APP_USER_WALLET_ADMIN_USER_PASSWORD (e.g. abc123)
The Keycloak user must have the same ID as the ledger user’s ID. This should be reflected in the default behavior.

How can I begin using lnav with the Quickstart application on MacOS?

On MacOS, lnav can be installed with brew install lnav. make capture-logs needs GNU date, which the nix shell provides. Outside the nix shell, brew install coreutils and put its gnubin directory first on your PATH.

Best practices & common pitfalls

How should I handle multiple user testing in the local environment?

Best practices include:
  1. Use separate browsers for different users
  2. Follow proper logout procedures between user switches
  3. Be aware that even incognito mode in the same browser may have session interference
  4. Consider using the make commands for testing specific operations (e.g., make create-app-install-request)

Database & query access

The Participant Query Store (PQS) is recommended for querying ledger data.

CN App Quickstart Make target reference

TargetDescription
buildBuild frontend, backend, Daml model and docker images.
build-backendBuild the backend service.
build-damlBuild the Daml model.
build-frontendBuild the frontend application.
canton-consoleStart the Canton console. Connects to the running app provider, app-user, sv ledgers.
capture-logsConsumes Docker events and starts capturing logs to /logs directory for each service when a start Docker event is observed. Ideal for diagnostic purposes.
cleanClean the build artifacts.
clean-allStop and remove all build artifacts, Docker containers and volumes.
clean-applicationLike clean-docker, but leaves observability services running.
clean-canton-consoleStop and remove the Canton console container.
clean-dockerStop and remove application Docker containers and volumes.
clean-shellStop and remove the Daml Shell container.
compose-configDisplays finalized configuration for each service initiated by make start. Dynamic environment variables e.g. APP_PROVIDER_PARTY are resolved at run time and not included in this output.
create-app-install-requestSubmit an App Install Request from the App User participant node.
generate-NOTICESGenerate the NOTICES file.
logsShow logs of Docker containers.
restartRestart the application services.
restart-backendBuild and restart the backend service.
restart-frontendBuild and restart the frontend application.
setupConfigure the local development environment (DevNet/LocalNet, Observability).
shellStart Daml Shell. Connects to the running application PQS database.
startStart the application and observability services if enabled.
statusShow status of Docker containers.
stopStop the application and observability services.
stop-applicationStop only the application, leaving observability services running.
tailTail logs of Docker containers.

UI Opening Commands

TargetDescription
open-app-uiOpen the Application UI in the active browser
open-observeOpen the Grafana UI in the active browser
open-sv-walletOpen the Super Validator wallet UI in the active browser
open-sv-interfaceOpen the Super Validator interface UI in the active browser
open-sv-scanOpen the Super Validator Scan UI in the active browser
open-app-user-walletOpen the App User wallet UI in the active browser

LocalNet URLs

URLDescription
http://app-provider.localhost:3000Main application UI (http://localhost:3000 redirects here)
http://localhost:3030Grafana observability dashboard (if enabled)
http://localhost:4000Super Validator gateway - lists available web UI options
http://wallet.localhost:2000App User Canton Coin wallet (App Provider 3000, SV 4000)
http://sv.localhost:4000Super Validator Operations
http://scan.localhost:4000Canton Coin Scan web UI - shows balances and validator rewards
http://localhost:3975App Provider JSON Ledger API (App User 2975, SV 4975)
http://localhost:3903App Provider Validator admin API (App User 2903, SV 4903)
Sponsoring Super Validators may offer different URLs for their DevNet services.