# Configuration (/docs/developer-guide/configuration)



## Deployment Modes [#deployment-modes]

Elmo supports several deployment modes, controlled by the `DEPLOYMENT_MODE` environment variable:

| Mode    | Description                                                                  |
| ------- | ---------------------------------------------------------------------------- |
| `local` | Single-org, email/password auth. Best for individual use. &#x2A;*(default)** |
| `demo`  | Read-only mode for showcasing Elmo without allowing changes.                 |
| `cloud` | Managed hosting (coming soon).                                               |

## Environment Variables [#environment-variables]

When you run `elmo init`, the CLI generates a `.env` file in your config directory. You can edit this file directly to change settings.

### Core Settings [#core-settings]

| Variable             | Description                                                                            | Default          |
| -------------------- | -------------------------------------------------------------------------------------- | ---------------- |
| `DEPLOYMENT_MODE`    | Deployment mode                                                                        | `local`          |
| `DATABASE_URL`       | PostgreSQL connection string                                                           | Generated by CLI |
| `BETTER_AUTH_SECRET` | Secret key for session encryption                                                      | Auto-generated   |
| `DISABLE_TELEMETRY`  | Set to `1` to disable all telemetry. See [Telemetry](/docs/developer-guide/telemetry). | —                |

### AI Provider Keys [#ai-provider-keys]

At least one provider is required for Elmo to track visibility. See [Providers](/docs/user-guide/providers) for a full cost/capability breakdown and recommended setups.

| Variable               | Description                                                                                                                     |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `BRIGHTDATA_API_TOKEN` | BrightData token — recommended scraper for ChatGPT + Google AI Mode. [Sign up](https://get.brightdata.com/67h1b7h0shcn)         |
| `OLOSTEP_API_KEY`      | Olostep key — recommended scraper, powers most large-scale trackers. [Sign up](https://olostep.com/?ref=elmo)                   |
| `OPENAI_API_KEY`       | OpenAI API key — enables ChatGPT (via API, not the consumer UI)                                                                 |
| `ANTHROPIC_API_KEY`    | Anthropic API key — enables Claude tracking                                                                                     |
| `OPENROUTER_API_KEY`   | OpenRouter key — one key for Claude + other hosted models                                                                       |
| `DATAFORSEO_LOGIN`     | DataForSEO login — optional, enables Google AI Mode scraping via `google-ai-mode:dataforseo:online`                             |
| `DATAFORSEO_PASSWORD`  | DataForSEO password                                                                                                             |
| `SCRAPE_TARGETS`       | Comma-separated `model:provider[:version][:online]` entries. See [Providers](/docs/user-guide/providers#scrape_targets-format). |

## Updating Configuration [#updating-configuration]

To change environment variables after initial setup:

```bash
# Edit the .env file
nano ~/.elmo/.env

# Restart services to pick up changes
elmo compose down
elmo compose up -d
```

## Using an External Database [#using-an-external-database]

By default, `elmo init` provisions a PostgreSQL container. To use an existing database instead, choose "Use existing Postgres" during `elmo init` and provide your connection string when prompted.

Your database must be PostgreSQL 15 or later.
