> ## Documentation Index
> Fetch the complete documentation index at: https://firebolt-aggregate-helm-docs-pr-5.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Engine arguments

> Command-line arguments that control where a self-managed Firebolt engine stores its data and which configuration file it loads.

A Firebolt engine is launched with `firebolt server`. The settings in the
[engine configuration reference](./engine-configuration) live inside a YAML file. The arguments on
this page are passed on the command line and are required before the configuration file is loaded.

```bash theme={"theme":{"light":"css-variables","dark":"css-variables"}}
firebolt server --data-dir /var/lib/firebolt --server-config /etc/firebolt/config.yaml
```

In container deployments (the [Firebolt Operator](./firebolt-operator/architecture) and the
[Helm chart](./helm-chart/overview)) these arguments are set for you by the image. You only need to
change them to relocate the engine's data directory or to point it at your own configuration file.

| Argument                 | Description                                               | Default                                    |
| :----------------------- | :-------------------------------------------------------- | :----------------------------------------- |
| `--data-dir <path>`      | Directory for the engine's local cache and configuration. | A temporary directory, deleted on shutdown |
| `--server-config <path>` | Path to the engine's YAML configuration file.             | `<data-dir>/config.yaml`                   |

## `--data-dir`

The data directory is the single writable location the engine owns. Everything the engine writes
locally at runtime lives under it:

* `persistent_data/`: the engine's local cache and working state.
* `diagnostic_data/`: logs and crash dumps.
* `tmp/`: temporary files produced while running queries.
* `query_endpoint`: the local Unix domain socket used to submit queries when running the single
  binary directly.

The engine creates these subdirectories on first start if they do not already exist.

The data directory is not the source of truth for your data: table data lives in object storage and
metadata lives in Postgres. The directory only holds a local cache plus the engine's configuration,
so it can be rebuilt from object storage and the metadata store if it is lost.

When the argument is omitted, the engine creates a temporary directory under the system temp
location (for example `/tmp/firebolt-XXXXXX`) and deletes it on shutdown. No data is lost when this
happens, but the cache is gone, so the engine rebuilds it on the next start. Pass `--data-dir <path>`
to keep the cache across restarts and avoid rebuilding it each time.

The directory must be writable by the user the engine runs as. In the Firebolt Core container image
the data directory is a dedicated writable volume mounted at `/var/lib/firebolt`, kept separate from
the read-only application files.

## `--server-config`

Points the engine at its [YAML configuration file](./engine-configuration), which declares the
engine's settings (`auth`, `engine`, `execution`, `storage`, and so on).

When the argument is omitted, the engine looks for `config.yaml` inside the data directory
(`<data-dir>/config.yaml`). If no configuration file is found, the engine starts with built-in
defaults; running the single binary locally writes a minimal starter `config.yaml` into the data
directory so you can edit it and restart.

Passing an explicit path lets you keep the configuration file outside the data directory, for example
by mounting it read-only, so you manage configuration independently of the engine's local cache.
