# 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, Anthropic, or OpenRouter)
* **(Recommended)** A scraping provider to track the real ChatGPT and Google AI Mode experiences — see [Providers](/docs/user-guide/providers)

## 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 ([Cloro](https://cloro.dev?fpr=elmo\&fp_sid=docs), [BrightData](https://get.brightdata.com/elmo?sid=docs), [Oxylabs](https://oxylabs.go2cloud.org/aff_c?offer_id=7\&aff_id=2263\&url_id=32), [SearchApi](https://www.searchapi.io/?via=elmo), [Olostep](https://olostep.com/?ref=elmo), [DataForSEO](https://try.dataforseo.com/elmo)) and/or direct model APIs (OpenAI, Anthropic, Mistral, OpenRouter); see [Providers](/docs/user-guide/providers) for details
. **Access** — Use Elmo on this machine (localhost), or from a domain behind a reverse proxy (see [Serving Elmo from a Domain](/docs/developer-guide/configuration#serving-elmo-from-a-domain))
. **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 **[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, Google AI Mode, and other live AI surfaces ([Cloro](https://cloro.dev?fpr=elmo\&fp_sid=docs), [BrightData](https://get.brightdata.com/elmo?sid=docs), [Oxylabs](https://oxylabs.go2cloud.org/aff_c?offer_id=7\&aff_id=2263\&url_id=32), [SearchApi](https://www.searchapi.io/?via=elmo), [Olostep](https://olostep.com/?ref=elmo), [DataForSEO](https://try.dataforseo.com/elmo)) |
| **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.
