# Requirements

Source: https://docs.interop.io/manager/requirements/index.html

## Hardware & Software Requirements

**io.Manager** can be scaled as necessary to operate with large, mid, or small-scale deployments.

The following minimum specifications are for small-sized development or pilot deployments up to 100 users where the three components are hosted on a single machine.

**Operating System**

- Any OS that can run a supported LTS version of Node.js.

**Software Requirements**

- Environment:
    - Any supported LTS version of Node.js - (22, 24).

- Databases:
    - Any supported version of MongoDB - (7, 8).
    - Any supported version of PostgreSQL - (14, 15, 16, 17, 18).
    - YugabyteDB (PostgreSQL compatible engine) - (2025.2).
    - Any supported version of Microsoft SQL Server - (2016 SP3, 2017, 2019, 2022, 2025).

- Admin UI:
    - The **io.Manager** Admin UI currently supports only React 18.
    - The **io.Manager** Admin UI uses AG Grid Enterprise, which requires a license key to operate. An AG Grid license key will be provided to you upon purchase of **io.Manager**.

**Hardware Requirements**

- CPU: at least 4 vCPUs;
- RAM: at least 4 GB RAM;
- HDD: at least 25 GB of free disk space;

## Licensing

> ⚠️ *Note that as of version 2.0.0, **io.Manager** requires a license key to operate.*

To acquire a license key, contact us at `sales@interop.io`.

### License Types

There are two types of licenses available for **io.Manager** - a trial license and a paid license:

| License Type | Purpose | Behavior at Expiration |
|--------------|---------|------------------------|
| Paid | For development, staging, UAT, and production environment usage. | After the license expires, **io.Manager** will start logging warning messages, but will continue operating normally. |
| Trial | For PoC usage. | After the license expires, **io.Manager** will stop operating completely. |

### Applying the License Key

The license key can be passed to **io.Manager** via the `licenseKey` property of the configuration object for initializing **io.Manager**, or via the `API_LICENSE_KEY` environment variable, depending on your [deployment](https://docs.interop.io/manager/deployment/index.md) approach.

The following example demonstrates passing the license key when initializing **io.Manager**:

```javascript
import { start } from "@interopio/manager";

const config = {
    licenseKey: "my-license-key"
};

const server = await start(config);
```

The following example demonstrates passing the license key using an environment variable:

```cmd
API_LICENSE_KEY=my-license-key
```
