Skip to main content

Test with the mobile app

Our demo app connects to any deployment you point it at. Use it to confirm the whole chain works: authentication, the validation hooks, and a real distributed key generation.

This works out of the box only if you took option 1 and deployed with our predefined credentials. With your own Auth0 tenant, the demo app cannot authenticate against it, so you need your own build. See Run Your Own Backend.

Collect your values

tofu -chdir=deploy/gcp/tf/backend output

You need auth_svc_public_ip and duo_server_public_ip from these outputs, plus the verifying key printed by generate-secrets-backend.sh during backend setup. Copy the full key, including the 01 prefix. If you did not save it, run that script again; it preserves existing secrets and prints the same key.

Install the app

Scan the QR code with an Android phone, or on an emulator install the APK from the download link. Android may ask you to trust the source.

QR code linking to the demo app APK
Scan to install

Point the app at your deployment

Open the app and tap Get Started.

Onboarding screen
Get started

On the sign-in screen, tap the server icon in the top-right to open Server settings. Without this the app runs against our hosted Duo sandbox instead of your deployment.

Sign-in screen
Sign in

Server settings offers three choices: Duo Demo, Trio Demo and Custom Backend. Pick Custom Backend and fill in:

FieldValue
Backend URLhttp://<auth_svc_public_ip>:9090
Auth0 audienceYour auth0_audience from global.tfvars
Cloud node typeDuo
Cloud node URLhttp://<duo_server_public_ip>:8080
Verifying keyThe verifying key from backend setup
Policy evaluationOn only if you enabled the policy engine
Custom backend form
Custom Backend

URLs must start with http:// or https:// and include the port. Both services are plain HTTP in this tutorial. Tap Save. The app checks that both URLs are reachable before applying the config.

Switching backends deletes the keys, wallet and account data stored on the device. The app asks for confirmation first.

A field-by-field description of the form lives in Run Your Own Backend.

Create a wallet

Sign in and create an account. The app and duo-server now run the MPC protocol and each end up holding one share of a key that never exists in full.

Create wallet
Create wallet

Watch the logs while this happens. duo-server calls auth-svc's validation hook before starting the session, and notifies it of the new key afterwards:

INFO hook dkg_setup_validation ... result=ok
INFO hook key_id_notification ... result=ok

That exchange is the proof the deployment is wired correctly: duo-server refuses to run a session that auth-svc has not approved.

Wallet home screen
Wallet ready

You now have a working {2, 2} MPC wallet running against your own infrastructure.

Next