# Getting started

**Version: 6.0.0**

Welcome to **EDDI**!

This article will help you to get started with **EDDI**.

## What You're Installing

EDDI is a **middleware orchestration service** for conversational AI. When you run EDDI, you're starting:

1. **The EDDI Service**: A Java/Quarkus application that exposes REST APIs for agent management and conversations
2. **MongoDB**: A database that stores agent configurations, packages, and conversation history
3. **Optional UI**: A web-based dashboard for managing agents (accessible at http://localhost:7070)

Once running, you can:

- Create and configure agents through the API or dashboard
- Integrate agents into your applications via REST API
- Connect to LLM services (OpenAI, Claude, Gemini, etc.)
- Build complex conversation flows with behavior rules
- Call external APIs from your agent logic

## Installation Options

### Option 0 - One-Command Install (Recommended)

**Linux / macOS / WSL2:**

```bash
curl -fsSL https://raw.githubusercontent.com/labsai/EDDI/main/install.sh | bash
```

**Windows (PowerShell):**

```powershell
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/labsai/EDDI/main/install.ps1" -OutFile "install.ps1"
Unblock-File .\install.ps1
.\install.ps1
```

The wizard guides you through choosing a database (MongoDB or PostgreSQL), optional authentication (Keycloak), and monitoring (Grafana). After setup, Agent Father is deployed automatically to help you create your first AI agent.

### Option 1 - EDDI with Docker (Manual)

There are two ways to use `Docker` with **EDDI**, either with **`docker-compose`** or launch the container manually.

_**Prerequisite**: You need an up and running `Docker` environment. (For references, see:_ [https://docs.docker.com/learn/](https://docs.docker.com/learn/))

### Use docker-compose (recommended)

1. `Checkout` the `docker-compose` file from `Github`:[`https://github.com/labsai/EDDI/blob/main/docker-compose.yml`](https://github.com/labsai/EDDI/blob/main/docker-compose.yml)
2. Run Docker Command:

   ```
    docker-compose up
   ```

### Use launch docker containers manually

1.  Create a shared network

    ```
    docker network create eddi-network
    ```

2.  Start a `MongoDB` instance using the `MongoDB` `Docker` image:

    ```
    docker run --name mongodb --network=eddi-network -d mongo
    ```

3.  Start **EDDI** :

    ```
    docker run --name eddi --network=eddi-network -p 7070:7070 -d labsai/eddi
    ```

## Option 2 - Deploy on Kubernetes

EDDI runs natively on any Kubernetes cluster (minikube, kind, GKE, EKS, AKS).

**Quickstart (all-in-one):**

```bash
kubectl apply -f https://raw.githubusercontent.com/labsai/EDDI/main/k8s/quickstart.yaml
bash k8s/create-secrets.sh  # generate vault key
```

**Using Kustomize overlays:**

```bash
kubectl apply -k k8s/overlays/mongodb/    # MongoDB backend
kubectl apply -k k8s/overlays/postgres/   # PostgreSQL backend
```

**Using Helm:**

```bash
helm install eddi ./helm/eddi --namespace eddi --create-namespace
```

See the [Kubernetes Deployment Guide](kubernetes.md) for full details including auth, monitoring, NATS, Ingress, and production hardening.

## Option 3 - Run from Source

#### _Prerequisites:_

- Java 25
- Maven 3.9+
- MongoDB ≥ 6.0 (or PostgreSQL)

### How to run the project

Setup a local MongoDB (≥ 6.0) or PostgreSQL instance.

> **Note:** If no database instance is available, Quarkus Dev Services will try to start a container automatically (requires Docker running on the host).

On a terminal, under project root folder, run the following command:

```shell
./mvnw compile quarkus:dev
```

1. Go to Browser --> [http://localhost:7070](http://localhost:7070)

### Build App & Docker image

```bash
./mvnw clean package '-Dquarkus.container-image.build=true'
```

### Download from Docker hub registry

```bash
docker pull labsai/eddi
```

[https://hub.docker.com/r/labsai/eddi](https://hub.docker.com/r/labsai/eddi)

### Run Docker image

For production, launch standalone mongodb and then start an eddi instance as defined in the docker-compose file

```bash
docker-compose up
```

For development, use

```bash
docker-compose -f docker-compose.yml -f docker-compose.local.yml up
```

For integration testing run

```bash
./mvnw verify -DskipITs=false
```

This uses Testcontainers to automatically start EDDI + MongoDB/PostgreSQL in Docker containers for E2E testing. Requires Docker to be running.
