> ## Documentation Index
> Fetch the complete documentation index at: https://docs.e6data.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> The configuration file tells Unified which services to start, where to store data, and how to run work. Laminar reads this TOML file and checks its values before starting those ser

How-to guideApplies to: Unified engine deployments

The configuration file tells Unified which services to start, where to store data, and how to run work. Laminar reads this TOML file and checks its values before starting those services. The console's Settings page shows the available fields and their current values. The reference below explains each setting, including fields used only with a particular worker provider or storage type.

## Read the field reference

Each top-level setting has its own page. Field names on a page are relative to its config group. For example, `flush_interval` on the Database page means `database.flush_interval`. `<name>` is a name you choose for a map entry. `[]` marks an array entry.

Read the short explanation and default first. Expand **Example** when you want to see what changing the value does.

### Services and features

* **[mode and network](https://docs.e6data.com/transformation/operations/configuration/deployment.md)**: Controller or worker mode and connection addresses.

* **[availability](https://docs.e6data.com/transformation/operations/configuration/availability.md)**: Startup, activation, health checks, and draining.

* **[agent](https://docs.e6data.com/transformation/operations/configuration/agent.md)**: Assistant model connection and turn limits.

* **[feature\_flags](https://docs.e6data.com/transformation/operations/configuration/feature-flags.md)**: Permissions for assistant actions, notebooks, and schedules.

* **[workspace](https://docs.e6data.com/transformation/operations/configuration/workspace.md)**: Saved query and workspace document limits.

* **[dashboards](https://docs.e6data.com/transformation/operations/configuration/dashboards.md)**: Dashboard definitions, refresh checks, and result cleanup.

* **[ui\_path](https://docs.e6data.com/transformation/operations/configuration/ui-path.md)**: Built UI files served by the engine.

### Storage and sources

* **[storage\_root](https://docs.e6data.com/transformation/operations/configuration/storage-root.md)**: One root for all Unified durable state.

* **[database](https://docs.e6data.com/transformation/operations/configuration/database.md)**: Saved service record limits and SlateDB settings.

* **[table\_storage](https://docs.e6data.com/transformation/operations/configuration/table-storage.md)**: Storage for default table files.

* **[result\_storage](https://docs.e6data.com/transformation/operations/configuration/result-storage.md)**: Shared files for results, artifacts, and checkpoints.

* **[max\_result\_object\_bytes](https://docs.e6data.com/transformation/operations/configuration/max-result-object-bytes.md)**: Size limit for one stored result object.

* **[iceberg](https://docs.e6data.com/transformation/operations/configuration/iceberg.md)**: Bounded table storage reads.

* **[file\_sources](https://docs.e6data.com/transformation/operations/configuration/file-sources.md)**: File roots that the engine can read.

* **[file\_source\_limits](https://docs.e6data.com/transformation/operations/configuration/file-source-limits.md)**: Limits on file discovery and source planning.

* **[delta\_source\_limits](https://docs.e6data.com/transformation/operations/configuration/delta-source-limits.md)**: Limits on Delta metadata and scans.

* **[kafka\_connections](https://docs.e6data.com/transformation/operations/configuration/kafka-connections.md)**: Named Kafka connections and batch limits.

* **[credentials](https://docs.e6data.com/transformation/operations/configuration/credentials.md)**: Named startup credentials for connections.

* **[secrets](https://docs.e6data.com/transformation/operations/configuration/secrets.md)**: Secret-store encryption key and external secret providers.

* **[catalog\_client](https://docs.e6data.com/transformation/operations/configuration/catalog-client.md)**: Catalog HTTP connection and request timeouts.

### Workers and execution

* **[workers](https://docs.e6data.com/transformation/operations/configuration/compute.md)**: How Unified starts task workers.

* **[network.workers](https://docs.e6data.com/transformation/operations/configuration/worker-listen-address.md)**: Controller listener for worker connections.

* **[workers.runtime.connection](https://docs.e6data.com/transformation/operations/configuration/worker-connection.md)**: Worker-control message limits and reply timeouts.

* **[submission\_defaults](https://docs.e6data.com/transformation/operations/configuration/submission-defaults.md)**: Default workload resources and run options.

* **[controller](https://docs.e6data.com/transformation/operations/configuration/controller.md)**: Planning, discovery, and task coordination limits.

* **[scheduler](https://docs.e6data.com/transformation/operations/configuration/scheduler.md)**: Scheduled runs and pending-run limits.

* **[committer](https://docs.e6data.com/transformation/operations/configuration/committer.md)**: Publishing prepared writes.

* **[workers.batch\_size](https://docs.e6data.com/transformation/operations/configuration/provisioner-batch-size.md)**: Worker allocations processed in each pass.

* **[gateway](https://docs.e6data.com/transformation/operations/configuration/gateway.md)**: Client plan limits and result polling.

* **[workers.runtime.executor](https://docs.e6data.com/transformation/operations/configuration/executor.md)**: Data buffers and storage I/O during execution.

* **[workers.runtime.duckdb](https://docs.e6data.com/transformation/operations/configuration/duckdb.md)**: Native Engine threads, memory, and temporary files.

* **[maintenance](https://docs.e6data.com/transformation/operations/configuration/maintenance.md)**: Table compaction targets and task limits.

* **[runtime](https://docs.e6data.com/transformation/operations/configuration/runtime.md)**: Background intervals and retry delays.

* **[transport](https://docs.e6data.com/transformation/operations/configuration/transport.md)**: Internal service connections, messages, and queues.

### Clients and notebooks

* **[http\_api](https://docs.e6data.com/transformation/operations/configuration/http-api.md)**: Browser/API listener, request limits, and MCP access.

* **[spark\_connect](https://docs.e6data.com/transformation/operations/configuration/spark-connect.md)**: Spark Connect listener and protocol limits.

* **[session](https://docs.e6data.com/transformation/operations/configuration/session.md)**: SQL session defaults, history, and uploaded artifacts.

* **[driver\_limits](https://docs.e6data.com/transformation/operations/configuration/driver-limits.md)**: Workload graph and status limits.

* **[result\_read\_limits](https://docs.e6data.com/transformation/operations/configuration/result-read-limits.md)**: Result pages and continuation-token limits.

* **[notebooks](https://docs.e6data.com/transformation/operations/configuration/notebooks.md)**: Notebook runs, Python processes, and output limits.

### Telemetry

* **[telemetry](https://docs.e6data.com/transformation/operations/configuration/telemetry.md)**: Logs, metrics, traces, export, and saved history.

Each field entry explains what the setting controls and gives a concrete example of its effect. It also lists the value type and what happens when you leave the field out. Examples show possible configurations; they are not extra defaults or values you must copy.

Defaults describe the engine in this release before desktop setup or platform configuration changes its settings. For example, a platform deployment may use a different port from the native default. Use Settings to see the values used by your running engine.

`Set when used` means there is no value in the native baseline for that provider or named entry. Supply the fields needed by the selected variant. `Unset` means the optional value is absent. The text explains whether that disables a feature, leaves a limit open, or selects another configured value. Empty maps and arrays contain no configured entries.

Byte values are integer bytes unless a field states another unit. CPU values use millicores: `1000` is one CPU. Durations use whole seconds plus additional nanoseconds:

```toml theme={"theme":{"light":"github-light","dark":"github-dark"}}
[runtime.background_interval]
secs = 1
nanos = 0

[gateway.poll_interval]
secs = 0
nanos = 100000000
```

The second example is 100 milliseconds. Every duration in the reference accepts these two fields; `nanos` must be below one billion. TOML has no `null` value. Omit an optional field to leave it unset. A zero value has a special meaning only where the reference states one.

## Choose the configuration file

* **Bare launch on macOS**: Creates a workspace config under `~/Library/Application Support/Laminar` if missing.

* **`LAMINAR_HOME=/absolute/path laminar`**: Creates or uses that workspace's `config.toml`.

* **`laminar --config /path/engine.toml`**: Reads exactly that file; does not apply desktop workspace setup.

* **`laminar --roles ...`**: Uses defaults or the explicit file, then replaces its hosted roles; does not apply desktop setup.

Relative file and directory paths in an explicit config use the process working directory. Use absolute paths for a service that may start from another directory. An existing workspace config is not replaced during startup.

## Defaults and precedence

The load order is engine defaults, values from the selected file, then supported command options. `--mode` selects controller or allocated worker mode. `--allow-config-edit` enables saving through Settings when a config file is available.

There is no general `LAMINAR_*` mapping for every config field, no automatic `${VARIABLE}` substitution in TOML strings, and no automatic merge of multiple config files. Environment access is specific to features such as the local workspace, allocation input, and credential providers.

`storage_root` is required in a config file. Other omitted fields use defaults, including fields inside nested sections. Set only the values you want to change. Settings shows the full effective configuration. Saves and exports contain the values that differ from defaults.

`workers.provisioners.<name>.provider` selects `in_process`, `local_process`, `docker`, `kubernetes`, or `lambda`. Each entry holds its own provider settings. Set `workers.default_provisioner` when more than one is defined. Define named resource sizes in `workers.profiles`, then select them on a workload or task.

## Disabled features

For `agent`, a disabled section can contain only its switch:

```toml theme={"theme":{"light":"github-light","dark":"github-dark"}}
[agent]
enabled = false
```

Their remaining fields are not needed to start a disabled feature. The parser fills omitted values internally. If you keep other fields in a disabled section, those values must still parse and pass applicable validation. A feature permission such as `feature_flags.notebooks.execution.python = true` does not create its required service or runtime.

## Configuration in the combined platform host

The platform command reads its YAML configuration:

```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
/app/laminar --config /config/config.yaml standalone
```

Add a `unified` map to enable Unified. It contains native Unified configuration fields. The host passes the resulting configuration to Unified in the same process. To load an independent Unified file, set:

```yaml theme={"theme":{"light":"github-light","dark":"github-dark"}}
unified:
  config-file: /config/unified.toml
```

The file must be mounted in the controller. Additional inline fields in the `unified` map override the loaded file. Set `storage_root` in that file, or set `unified.storage_root` inline.

In platform mode the host serves Unified through its shared HTTP listener. Unified service RPC, worker connections, and telemetry history still use their own configured addresses. A compute setting does not add Kubernetes Service ports or permissions.

## Process modes and addresses

Controller mode hosts all controller services locally. Worker mode receives generated configuration and allocation input at launch. Set internal listeners and advertised worker URLs under `network.services`, `network.workers`, and `network.telemetry`. Client listeners use `network.http` and `network.spark_connect`.

Users maintain one controller file. The controller supplies worker runtime settings and endpoints. Independent controller-service deployment is no longer supported.

## Settings and file access

An automatically created workspace config is editable through Settings. An explicit config is read-only there unless started with:

```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
laminar --config /absolute/path/to/engine.toml --allow-config-edit
```

The engine user needs permission to write that file. Validation checks the proposed values before saving. Saving a new file does not rebuild running services. Deployment changes require starting the engine with the saved configuration before they take effect. Feature flag controls have their own behavior and do not replace this startup configuration.

Keep secret values in the configured secret provider where possible. Command options and file exports are not a general-purpose secret distribution mechanism. See [networking and security](https://docs.e6data.com/transformation/operations/configuration/networking-security.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.