> For the complete documentation index, see [llms.txt](https://docs.rumi.systems/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rumi.systems/rumi-management/reference/admin/configuration.md).

# Configuration

This page provides a reference for Rumi Admin configuration.

## ecosystem.json

The `ecosystem.json` file is the central configuration file for Rumi Admin. It is located in the application root directory.

### Full Format

```json
{
  "apps": [{
    "name": "Rumi Admin Webserver",
    "script": "./app/index.js",
    "args": [8001],
    "instances": 4,
    "max_memory_restart": "256M"
  }],
  "agents": [{
    "name": "Local Agent",
    "url": "http://localhost:7778/rumi-agent",
    "access": "proxy"
  }],
  "proxy": {
    "port": 8000
  },
  "ldap": {
    "enabled": false
  },
  "okta": {
    "enabled": false,
    "token": "",
    "domain": ""
  }
}
```

### apps

Application settings for the Node.js server.

| Field                | Type   | Description                                           |
| -------------------- | ------ | ----------------------------------------------------- |
| `name`               | string | Application name                                      |
| `script`             | string | Entry point script path                               |
| `args`               | array  | Arguments — first element is the HTTP port            |
| `instances`          | number | Number of Node.js worker instances (PM2 cluster mode) |
| `max_memory_restart` | string | Memory threshold for automatic restart                |

### agents

Default Rumi Agent connections loaded at startup.

| Field    | Type   | Description                                                   |
| -------- | ------ | ------------------------------------------------------------- |
| `name`   | string | Display name for the agent                                    |
| `url`    | string | Agent REST API base URL (e.g., `http://host:7778/rumi-agent`) |
| `access` | string | Access mode (`proxy`)                                         |

Additional agents can be added at runtime through the Admin UI. Agent registrations are stored in the SQLite database.

### proxy

| Field  | Type   | Description |
| ------ | ------ | ----------- |
| `port` | number | Proxy port  |

### ldap

| Field     | Type    | Description                                       |
| --------- | ------- | ------------------------------------------------- |
| `enabled` | boolean | Enable LDAP authentication (delegated to Grafana) |

When LDAP is enabled, configure the LDAP connection details in Grafana's `ldap.toml` configuration file.

### okta

| Field     | Type    | Description                    |
| --------- | ------- | ------------------------------ |
| `enabled` | boolean | Enable Okta SSO authentication |
| `token`   | string  | Okta API token                 |
| `domain`  | string  | Okta organization domain       |

## Environment Variables

| Variable              | Description                                                        |
| --------------------- | ------------------------------------------------------------------ |
| `RUMI_ADMIN_DATA_DIR` | Data directory for Grafana's database and configuration (required) |

## Database

Rumi Admin uses Grafana's SQLite database for storage. The database is located in the Grafana data directory. Rumi Admin creates the following tables:

| Table         | Description                                         |
| ------------- | --------------------------------------------------- |
| `rumi_agents` | Agent registrations (id, name, type, url, access)   |
| `rumi_users`  | Per-user settings (user\_id, org\_id, disable\_cnc) |
| `rumi_config` | Global configuration settings (setting, value)      |

## REST API Endpoints

### Agent Management

| Method | Path                                 | Description                 |
| ------ | ------------------------------------ | --------------------------- |
| GET    | `/nvx/agents`                        | List all agents             |
| POST   | `/nvx/agents`                        | Create an agent             |
| GET    | `/nvx/agents/:id`                    | Get agent by ID             |
| PUT    | `/nvx/agents/:id`                    | Update an agent             |
| DELETE | `/nvx/agents/:id`                    | Delete an agent             |
| GET    | `/nvx/agents/ping/:id`               | Ping an agent               |
| GET    | `/nvx/agents/systems/:id`            | Get systems for agent       |
| GET    | `/nvx/agents/system/xvms/:id`        | Get containers in system    |
| GET    | `/nvx/agents/system/scripts/:id`     | Get system scripts          |
| GET    | `/nvx/agents/app/commands/:id`       | Get application commands    |
| GET    | `/nvx/agents/datasources/:id`        | Get data sources from agent |
| GET    | `/nvx/agents/info/:id`               | Get agent info              |
| POST   | `/nvx/agents/xar/:id`                | Upload XAR file             |
| POST   | `/nvx/agents/invoke/script/:id`      | Execute system script       |
| POST   | `/nvx/agents/app/command/invoke/:id` | Invoke application command  |
| POST   | `/nvx/agents/invoke/cancel/:id`      | Cancel script execution     |
| POST   | `/nvx/agents/systems/archive/:id`    | Archive system              |
| POST   | `/nvx/agents/systems/restore/:id`    | Restore system              |
| POST   | `/nvx/agents/systems/delete/:id`     | Delete system               |

### User and Configuration

| Method | Path               | Description                 |
| ------ | ------------------ | --------------------------- |
| GET    | `/nvx/user`        | Get current user settings   |
| POST   | `/nvx/user`        | Update user settings        |
| DELETE | `/nvx/user`        | Remove user settings        |
| GET    | `/nvx/users`       | List all users (admin only) |
| GET    | `/nvx/config`      | Get global configuration    |
| POST   | `/nvx/config`      | Set global configuration    |
| DELETE | `/nvx/config`      | Remove global configuration |
| GET    | `/nvx/datasources` | Get data sources            |
| GET    | `/nvx/info`        | Get Admin version info      |
