# Nomos - ICA controller stack

In our framework, connecting with different chains is facilitated through our gateway, the **ICA Controller Stack**. The ICA Controller is a Solidity contract (with a CosmWasm version available) that establishes a channel to create an ICA on the host chain. The unique value of the ICA is that it acts as a personal, fully secure channel that can only send messages to the account.

<figure><img src="/files/r0WVCDcilrlvKFTv2aBA" alt=""><figcaption></figcaption></figure>

**Architecture Overview:**

1. **ICA Controller Factory**:
   * Responsible for creating the ICA Controller and moving it to the handler.
2. **ICA Handler**:
   * Holds the ICA until the user claims it, ensuring a seamless onboarding process.
3. **ICA Controller**:
   * This is the smart contract that controls your ICA. It is a fully transferable address, meaning you can sell it or transfer ownership.
   * The ICA Controller includes functions to encode and decode messages, maximizing optimization.
   * The channel is established using the Union Voyager solution, while assets are moved directly from the user’s wallet through the USC01 relayer.

#### **Key Features:**

* **Personalized Channel**: Each ICA is a unique, secure channel linked to the user, capable of sending messages only to the designated account.
* **Transferable Ownership**: The ICA Controller can be transferred or sold, offering flexibility in ownership management.
* **Optimized Communication**: The controller’s functions are designed to efficiently encode and decode messages, enhancing performance and reducing costs.
* **Seamless Asset Movement**: Assets are moved directly from the user’s wallet via the USC01 relayer, providing a straightforward and secure way to interact with the ICA.

This architecture ensures maximum security and flexibility, enabling users to interact with various chains through a robust and optimized gateway. you can read more on [Nomos Docs](https://nomos-ms.gitbook.io/nomos/architecture/core-idea-behind-nomos/ica-and-smart-accounts)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.escher.finance/architecture/nomos-ica-controller-stack.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
