# Quick Start (/docs/getting-started)



## Prerequisites [#prerequisites]

* **Docker** — Docker Engine 24+ with Docker Compose v2
* **Node.js** — 18.x or later (for the CLI)
* At least one AI provider API key (OpenAI or Anthropic)

## Install the CLI [#install-the-cli]

```bash
npm install -g @elmohq/cli
```

## Initialize Your Instance [#initialize-your-instance]

Run the interactive setup wizard:

```bash
elmo init
```

The wizard walks you through:

. **Config directory** — Where to store your `elmo.yaml` and `.env` files (default: `./elmo`)
. **PostgreSQL** — Run Postgres in Docker (recommended) or provide an existing `DATABASE_URL`
. **AI Providers** — Configure scrapers (BrightData, Olostep, DataForSEO) and/or direct model APIs (OpenAI, Anthropic, Mistral, OpenRouter); see [Providers](/docs/user-guide/providers) for details
. **Start** — Optionally start the stack immediately

Once complete, Elmo generates two files in your config directory:

| File        | Purpose                                       |
| ----------- | --------------------------------------------- |
| `elmo.yaml` | Docker Compose configuration for all services |
| `.env`      | Environment variables, secrets, and API keys  |

## Start Elmo [#start-elmo]

If you didn't start during init, bring everything up with:

```bash
elmo compose up -d
```

This pulls the Docker images and starts all services. Once they report healthy, open &#x2A;*[http://localhost:1515](http://localhost:1515)** in your browser.

## System Architecture [#system-architecture]

<img src="/brand/architecture.svg" alt="Elmo system architecture: User connects to Web; Web and Worker share a Postgres database; Web calls LLM APIs; Worker calls both LLM APIs and an LLM Scraper." className="my-6 w-full" />

| Service         | Role                                                                   |
| --------------- | ---------------------------------------------------------------------- |
| **Web**         | Dashboard UI and REST API                                              |
| **Worker**      | Background scheduler that drives prompt runs                           |
| **Postgres**    | Shared database and job queue                                          |
| **LLM APIs**    | Direct API calls (OpenAI, Anthropic, OpenRouter)                       |
| **LLM Scraper** | Scrapers for ChatGPT, Claude, and Google AI Mode (Brightdata, Olostep) |
| **Elmo CLI**    | Generates `elmo.yaml` + `.env` and runs `docker compose`               |

## CLI Commands Reference [#cli-commands-reference]

Once Elmo is running, these commands help you manage it:

```bash
# View live logs
elmo compose logs -f

# View logs for a specific service
elmo compose logs -f web

# Check service status
elmo compose ps

# Stop all services
elmo compose down
```

## What's Next [#whats-next]

With Elmo running, head to the [User Guide](/docs/user-guide) to create your first brand, configure prompts, and start tracking AI visibility.
