# 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)
- A [TypeSafe](https://console.typesafe.ai) API key for Jev, which judges which answers mention your brand and their sentiment, or an OpenRouter key to call Jev through OpenRouter. Very roughly $0.15–0.35 per 1,000 answers, about $2–4 a month for 25 daily prompts on 3 platforms ([pricing by volume](/docs/developer-guide/configuration#mention-judging))
- **(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:

1. **Config directory** — Where to store your `elmo.yaml` and `.env` files (default: `./elmo`)
2. **PostgreSQL** — Run Postgres in Docker (recommended) or provide an existing `DATABASE_URL`
3. **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
4. **Access** — Use Beai on this machine (localhost), or from a domain behind a reverse proxy (see [Serving Beai from a Domain](/docs/developer-guide/configuration#serving-elmo-from-a-domain))
5. **Start** — Optionally start the stack immediately

Once complete, Beai 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 Beai [#start-beai]

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** in your browser.

## System Architecture [#system-architecture]

<img
  src="/brand/architecture.svg"
  alt="Beai 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)) |
| **Beai CLI** | Generates `elmo.yaml` + `.env` and runs `docker compose` |

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

Once Beai 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 Beai running, head to the [User Guide](/docs/user-guide) to create your first brand, configure prompts, and start tracking AI visibility.
