# Engine and storage settings

Every engine and storage settings field served by the server configuration types.

These fields choose the listeners, durable store, cluster ownership and workflow runtime. A shard count is fixed when the database is created.

## Listeners

- `server.listen_address`: HTTP and WebSocket listener. Default 127.0.0.1:8080.
- `server.grpc_addresses`: Nonempty list of unique, nonzero-port gRPC listeners. Default [127.0.0.1:50051]. The first is the primary control endpoint.
- `server.cors_allowed_origins`: Exact HTTP origins, with no path or trailing slash. Default empty: same-origin access only; no wildcard.


## Store

- `store.backend`: haematite (durable, default) or memory (ephemeral; loses state at shutdown).
- `store.owned_shards`: Static shard assignment. Empty means this node owns all shards. Meaningful for haematite, not memory.
- `store.data_dir`: Haematite data directory. The merged config defaults it under Aion home. Existing data is reopened; a fresh directory creates a database.
- `store.shard_count`: Number of haematite shards to create on a fresh database. Defaults to 64.
- `store.cluster`: Optional cluster membership. Omit for single-node storage. Requires haematite.
- `store.node_cache_budget`: Required for haematite. Use an object with a positive bytes integer, or the explicit string unlimited. File boot healing supplies unlimited when missing; a constructed config must provide it.
- `store.lock_acquisition_patience_ms`: Retired. Warned and ignored; the server waits for the kernel writer lock and reports the holder.
- `store.lock_acquisition_retry_cadence_ms`: Retired. Warned and ignored; the kernel lock controls acquisition.


## Cluster

- `store.cluster.node_id`: Required unique distribution node name.
- `store.cluster.bind_address`: Required replication and quorum listener address.
- `store.cluster.members`: Complete quorum membership by node id. An empty list means this node alone. Do not replace full membership with only reachable peers.
- `store.cluster.peers`: Peer connection entries. Each gives its name, replication endpoint, optional gRPC endpoint and owned shards.
- `store.cluster.failover_poll_interval_ms`: Peer liveness cadence in milliseconds. Default 500.
- `store.cluster.failover_confirmations`: Consecutive disconnected observations before adoption. Positive integer; default 3.
- `store.cluster.cancel_relay_backoff_base_ms`: Required positive first-retry delay for relaying a remote descendant cancellation. No default.
- `store.cluster.cancel_relay_backoff_multiplier`: Required retry growth factor, at least one. No default.
- `store.cluster.cancel_relay_backoff_max_ms`: Required delay ceiling, at least the base delay. No default.


## Peer entries

- `store.cluster.peers.name`: Required peer node name, matching its configured node id.
- `store.cluster.peers.address`: Required peer replication endpoint.
- `store.cluster.peers.grpc_address`: Optional peer client API endpoint for forwarding. Without it an incorrectly addressed request returns NotOwner.
- `store.cluster.peers.owned_shards`: Shards assigned to this peer. Automatic adoption requires these to be declared.


## Runtime

- `runtime.scheduler_threads`: Positive engine scheduler thread count. Default 1.
- `runtime.jit_threshold`: Optional positive compilation threshold. When absent, beamr chooses its own default. A large value defers compilation; it does not disable it.
- `runtime.query_timeout_ms`: Positive query reply deadline in milliseconds. Merged default 10000; zero is refused.
- `runtime.workloop_sweep_interval_ms`: Positive workloop sweep interval in milliseconds. Merged default 1000. It contributes to health-alarm detection latency.
- `runtime.stop_drain_timeout_ms`: Positive no-progress bound while stopping engine workers. Merged default 30000 ms. Each progress report resets the bound.


## Drain

- `drain.timeout_seconds`: Positive graceful transport drain window. Default 30 seconds.


## Namespaces

- `namespaces.default`: Default namespace name. Default default.
- `namespaces.auto_create`: open (default) allows an unseen namespace to be created during worker registration or workflow start; closed requires explicit creation through POST /namespaces.
- `namespaces.max_in_flight_activities`: Default 1024. Caps claimed outbox rows only when outbox.enabled=true, for parallel/collect members. Ordinary single activity calls bypass it. The typed outbox default is false; the first-run template enables it. A successful worker handoff marks the row done while its handler may still execute, so running handlers can exceed this claim ceiling. Cluster nodes receive a rounded owned-shard share.


## Resolver

- `namespace.mode`: SharedEngine by default. SingleTenant carries one explicitly named namespace.


Read [configuration discovery and the starter file](/aion/reference/configuration/).
