{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-products/wallet/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Types of devices","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"types-of-devices","__idx":0},"children":["Types of devices"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"In this section"},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/signing-and-key-management/devices/add-a-device"},"children":["Add and manage devices"]}," – Add, pair, approve, and manage mobile and CloudSign devices"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/signing-and-key-management/devices/set-up-cloudsign"},"children":["Set up and run CloudSign"]}," – Deploy CloudSign for programmatic signing"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/signing-and-key-management/devices/run-cloudsign-in-aws-nitro-enclaves"},"children":["Run CloudSign in AWS Nitro Enclaves"]}," – Isolate CloudSign in a hardware-secured enclave"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Users can create and link devices to their organization in Ripple Custody (Wallet) in order to secure private key shares, approve and sign transactions. Devices are essential for securing and using MPC wallets and they are optional for approvals."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For example, when a user makes a transaction requiring an MPC quorum signature, the relevant device(s) will receive a notification requesting that the user sign."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There are 2 types of device that can facilitate secure approvals and signings. Both types of device employ a robust security architecture, allowing users to control and protect their assets from any location."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"mobile-devices","__idx":1},"children":["Mobile devices"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Ripple Custody (Wallet) platform offers a dedicated mobile application, ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Ripple Custody (Wallet) Mobile"]},", specifically tailored for transaction approvals, signature generation and securing private key shares. Setting up a mobile device allows users to manually examine transactions before they are submitted."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Download the app and make sure notifications are enabled for Ripple Custody (Wallet) Mobile in your phone’s settings. The production app is on the App Store, and a separate sandbox app is available through Apple TestFlight. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/signing-and-key-management/devices/add-a-device#install-the-mobile-app"},"children":["Install the mobile app"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each phone is a separate device with its own MPC key material. The app stores that key material on the phone and doesn't sync it through iCloud Keychain, so another phone signed in to the same Apple ID can't sign for the quorums the first phone belongs to. Ripple Custody (Wallet) doesn't support ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/signing-and-key-management/mpc-quorums/key-restructuring"},"children":["restructuring"]}," Mobile or Mixed quorums in production, so you can't swap a new phone into an existing quorum in place of the old one. Before you move signing to a new phone, ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/signing-and-key-management/devices/add-a-device"},"children":["add it as a device"]}," and contact Ripple support to plan the change."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Coming soon"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Ripple Custody (Wallet) Mobile app is currently only available on iOS. An Android version of the mobile application will be available soon."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"notifications-and-request-deadlines","__idx":2},"children":["Notifications and request deadlines"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Key ceremonies, signing requests, and approvals sent to a phone expire 5 minutes after Ripple Custody (Wallet) creates them. The phone's notification is usually how the user learns that a request is waiting."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Keep notifications on."]}," If notifications are off for the app, the app shows a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Notifications are off"]}," notice on its home screen, with an ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Open Settings"]}," button that opens the app's page in iOS Settings. Turn notifications on there. The notice disappears when you return to the app."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Watch the countdown."]}," While the app takes part in a key ceremony, the screen shows how long is left before the request expires. Keep the screen open until it finishes."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Retry a failed key ceremony."]}," If a key ceremony fails for a reason that can recover, such as a timeout or a temporary network problem, the app offers ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Retry"]}," while the request is still open. If the request has expired, or the failure can't be fixed by trying again, the app shows ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Done"]}," instead. Ask an administrator to start a new request."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"cloudsign-devices","__idx":3},"children":["CloudSign devices"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ripple Custody (Wallet) CloudSign devices run on a cloud instance rather than a mobile and operate programmatically."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/wallet/signing-and-key-management/devices/set-up-cloudsign"},"children":["Set up and run CloudSign"]}," for specific instructions on how to set up and run CloudSign."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Limitation"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["CloudSign devices can only be used for MPC quorum signatures, not approvals."]}]}]},"headings":[{"value":"Types of devices","id":"types-of-devices","depth":1},{"value":"Mobile devices","id":"mobile-devices","depth":2},{"value":"Notifications and request deadlines","id":"notifications-and-request-deadlines","depth":3},{"value":"CloudSign devices","id":"cloudsign-devices","depth":2}],"frontmatter":{"title":"Types of devices","seo":{"title":"Types of devices"}},"lastModified":"2026-10-08T12:52:04.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/wallet/signing-and-key-management/devices","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}