> For the complete documentation index, see [llms.txt](https://ungate.gitbook.io/ungate-infiniroute-avs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ungate.gitbook.io/ungate-infiniroute-avs/operators/mainnet/installation.md).

# Installation

Prepare your system to run the Ungate AVS operator on EigenLayer Testnet (Holesky).

### Prerequisites <a href="#prerequisites" id="prerequisites"></a>

**Registered EigenLayer Operator Account:** Ensure you have a fully registered EigenLayer operator account. If you don't have one, follow the steps in the [EigenLayer User Guide](https://docs.eigenlayer.xyz/restaking-guides/restaking-user-guide) to create and fund your account.

### Operator System Requirements <a href="#operator-system-requirements" id="operator-system-requirements"></a>

* Operating System: Linux AMD x64
* vCPUs: 2
* Memory: 4 GiB
* Storage: 20 GB
* EC2 Equivalent: t3.medium
* Total download bandwidth usage: 10-50 GB/month
* Upload bandwidth usage: 1-10 GB/month
* Open ports: 8080 and 4002

> **Important note**: Set your Node version to 22.6, if not already on it

#### ​Prepare  Operator Deployment <a href="#prepare-local-eoracle-data-validator-files" id="prepare-local-eoracle-data-validator-files"></a>

1. Clone this [repo](https://github.com/Ungate-Ai/infini-route-attestators-public) and execute the following commands:

```
git clone https://github.com/Ungate-Ai/infini-route-attestators-public-mainnet.git
```

2. Copy `.example_env` into `.env`.&#x20;

```
cd infini-route-attestators-public-mainnet
cp .env.example .env
```

3. Edit the `.env` and update the PRIVATE\_KEY\_ATTESTER and OPERATOR\_ADDRESS with your EigenLayer proxy operator private key (ECDSA key) and the actual operator public key. This is stored locally and is used to create a BLS public key.

{% hint style="success" %}
To address the security risk associated with storing the private key of you main operator account in the  .env file, we've introduced the concept of a signer / proxy attestor account. This could be a newly created account that doesn't need to have any funds in it.&#x20;

Now instead of using the private key of your main operator account, all you need to do is use the public address of it in the OPERATOR\_ADDRESS.

For more information about this, please review the Othentic documentation [here](https://docs.othentic.xyz/main/avs-framework/othentic-cli/operator-registration#delegate-key-and-signing-key)
{% endhint %}

```shellscript
PRIVATE_KEY_ATTESTER=<Signer / Proxy Account Private key>
OPERATOR_ADDRESS=<Public address of the Main Operator Account>
```
