> For the complete documentation index, see [llms.txt](https://mercure-technologies.gitbook.io/expo-open-ota/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mercure-technologies.gitbook.io/expo-open-ota/dashboard/configuration.md).

# Configuration

Configure the dashboard with environment variables.

### Dashboard

Set `USE_DASHBOARD=true` to enable the dashboard.

The server then renders the dashboard at `/dashboard`.

Set `ADMIN_EMAIL` and `ADMIN_PASSWORD` to protect dashboard access:

```bash
USE_DASHBOARD=true
ADMIN_EMAIL=you@example.com
ADMIN_PASSWORD=Choose-a-strong-password-1
```

Signing in always takes the email and the password together. What the pair means depends on the server mode:

* In **stateless mode**, it is the dashboard's only account, and it is always an admin. Change the variables and restart the server to rotate it.
* On the **control plane**, it is read once, on the first boot, to create the first admin account in PostgreSQL. From then on accounts are managed from the dashboard's [Users page](/expo-open-ota/dashboard/users.md) and the two variables can be removed from the deployment.

{% hint style="warning" %}
In stateless mode, without `ADMIN_EMAIL` and `ADMIN_PASSWORD` every dashboard login is rejected — nobody can log in.

On the control plane, the first boot refuses to start until both are set **and** `ADMIN_PASSWORD` meets the dashboard password policy: at least 8 characters, with an uppercase letter, a lowercase letter, a digit and a special character.

Use a unique, securely stored password in production.
{% endhint %}

### Develop the dashboard locally

The repository's `docker-compose` setup does not build or serve the dashboard.

To test it locally, clone the repository, then start the dashboard from `apps/dashboard`:

```bash
cd apps/dashboard
npm run dev
```

The development server uses `http://localhost:3000` as the default API URL.

Override `VITE_OTA_API_URL` to connect the dashboard to another server:

```bash
VITE_OTA_API_URL=https://ota.example.com npm run dev
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://mercure-technologies.gitbook.io/expo-open-ota/dashboard/configuration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
