# Components

The components of the Ripple Custody infrastructure are divided into:

- Ripple interaction components
- Ripple core and governance components
- External components


## Ripple interaction components

The components of the interaction layer enable consumption of the core services for customer-facing applications. The interaction components are:

- Desktop and mobile app
- Web UI
- Notification server
- Authentication server


All services in the interaction layer are untrusted. For more information, see [Untrusted components](/products/custody/v1.26/overview/architecture/security#untrusted-components).

### Desktop app and mobile app

These two apps both perform authorization and authentication functions for the web UI. These apps both perform the same functions and can be used interchangeably.

### Web UI

The Web UI is a back-office user interface for Ripple Custody.

### Notification server

The notification server manages notifications for the web UI and the mobile and desktop apps. It also acts as an intermediary for dynamic message passing between the web UI and the apps, for example, to trigger an authorization request from the web UI on the mobile app.

### Authentication server

The authentication server is an OpenID Connect (OIDC) server used for JSON Web Token (JWT) generation and authentication.

## Ripple core and governance components

The components of the core and governance layer contain the main business logic. The core and governance components are:

- API gateway
- Governance engine
- Ledger accounting service
- Indexers
- AMQP broker and event processing


The components of this layer orchestrate all components in the system and provide the governance, accounting, and transaction execution services. They are responsible for interaction with distributed ledger network blockchain nodes, the database, and the queuing system, and expose the services and data through a REST API.

The only trusted component of the core and governance layer is the governance engine -- all others are untrusted. For more information, see [Component security](/products/custody/v1.26/overview/architecture/security#component-security).

### API gateway

The API gateway exposes the API and performs validation checks when accepting user requests. The API gateway also forwards requests to the Advanced Message Queuing Protocol (AMQP) message queue for processing.

### Governance engine

The governance engine enforces system governance and updates the system state when all conditions of the governance workflow are fulfilled. It ensures data integrity by storing a record of the complete state of all of the trusted entities in Ripple Custody, along with their previous revisions. It also executes system updates regulated by the governance framework and the execution of transactions.

The governance engine is the only trusted part of the infrastructure for executing policy-regulated actions and transactions. For more information, see [Trusted components](/products/custody/v1.26/overview/architecture/security#trusted-components).

### Ledger accounting service

The ledger accounting service handles system accounting, balance and transaction management, and most of the ledger-specific business logic. The ledger service reads from and writes to the indexers, ensures proper management of chain updates, and organizes and parses transactions into proper accounting structures. The ledger accounting service also takes care of the core compliance processes, such as management of quarantines for incoming transfers.

### Indexers

The indexers act as an intermediary between the ledger accounting service and the blockchain nodes. They monitor and index the supported blockchains. They fetch blocks, identify transactions that relate to a Ripple Custody account within the block, and pass the information to the ledger accounting service for processing.

Ripple Custody uses our [Unified Indexer Service](/products/custody/v1.26/overview/architecture/unified-indexer-service) to deliver indexing services.

### AMQP broker and event processing

The AMQP (Advanced Message Queuing Protocol) broker and event processing components queue requests and process events from requests.

For more information, see [Event tracking](/products/custody/v1.26/system-management/events).

## External components

These components interact with the core and governance Ripple components to enable key management and blockchain interactions.

The external components are:

- Blockchain nodes
- Vault
- Key management system


Optionally, they also include any third-party apps that integrate with Ripple Custody.

### Blockchain nodes

Blockchain nodes receive transactions from their dedicated indexer, and return blockchain information to the indexer.

### Vault

The vault maintains the safety of key material and builds and signs outgoing ledger transactions. The vault executes transaction orders once they are fully approved, and delivers the signed ledger transaction to Ripple Custody for broadcast. You can use multiple vaults. Different vaults can provide different functionality, for example:

- Key storage with one or multiple types of key management systems.
- Key isolation. For example, you can use a hot vault for online wallets and a cold vault for offline wallets.


### Key management system (KMS)

Vaults need a key management system (KMS) to perform cryptographic operations. Ripple Custody supports both hardware-security module (HSM) and multi-party computation (MPC) key management.