Sync service configuration 
This page documents the config options for self-hosting the Electric sync engine.
Advanced only
You don't need to worry about this if you're using Electric Cloud.
Also, the only required configuration is DATABASE_URL.
Configuration 
The sync engine is an Elixir application developed at packages/sync-service and published as a Docker image at electricsql/electric.
Configuration options can be provided as environment variables, e.g.:
docker run \
    -e "DATABASE_URL=postgresql://..." \
    -e "ELECTRIC_DB_POOL_SIZE=10" \
    -p 3000:3000 \
    electricsql/electricThese are passed into the application via config/runtime.exs.
Database 
DATABASE_URL 
| Variable | DATABASE_URLrequired | 
| Description | Postgres connection string. Used to connect to the Postgres database. The connection string must be in the libpg Connection URI format of  The  For a secure connection, set the   | 
| Example | DATABASE_URL=postgresql://user:password@example.com:54321/electric | 
ELECTRIC_DATABASE_USE_IPV6 
| Variable | ELECTRIC_DATABASE_USE_IPV6 | 
| Default | false | 
| Description | Set to   | 
| Example | ELECTRIC_DATABASE_USE_IPV6=true | 
ELECTRIC_DB_POOL_SIZE 
| Variable | ELECTRIC_DB_POOL_SIZE | 
| Default | 20 | 
| Description | How many connections Electric opens as a pool for handling shape queries.  | 
| Example | ELECTRIC_DB_POOL_SIZE=10 | 
ELECTRIC_REPLICATION_STREAM_ID 
| Variable | ELECTRIC_REPLICATION_STREAM_ID | 
| Default | default | 
| Description | Suffix for the logical replication publication and slot name.  | 
| Example | ELECTRIC_REPLICATION_STREAM_ID=my-app | 
Electric 
ELECTRIC_INSTANCE_ID 
| Variable | ELECTRIC_INSTANCE_ID | 
| Default | Electric.Utils.uuid4() | 
| Description | A unique identifier for the Electric instance. Defaults to a randomly generated UUID.  | 
| Example | ELECTRIC_INSTANCE_ID=some-unique-instance-identifier | 
ELECTRIC_SERVICE_NAME 
| Variable | ELECTRIC_SERVICE_NAME | 
| Default | electric | 
| Description | Name of the electric service. Used as a resource identifier and namespace.  | 
| Example | ELECTRIC_SERVICE_NAME=my-electric-service | 
ELECTRIC_ENABLE_INTEGRATION_TESTING 
| Variable | ELECTRIC_ENABLE_INTEGRATION_TESTING | 
| Default | false | 
| Description | Expose some unsafe operations that faciliate integration testing. Do not enable this production.  | 
| Example | ELECTRIC_ENABLE_INTEGRATION_TESTING=true | 
ELECTRIC_LISTEN_ON_IPV6 
| Variable | ELECTRIC_LISTEN_ON_IPV6 | 
| Default | false | 
| Description | By default, Electric binds to IPv4. Enable this to listen on IPv6 addresses as well.  | 
| Example | ELECTRIC_LISTEN_ON_IPV6=true | 
ELECTRIC_LOG_CHUNK_BYTES_THRESHOLD 
| Variable | ELECTRIC_LOG_CHUNK_BYTES_THRESHOLD | 
| Default | 10485760 | 
| Description | Limit the maximum size of a shape log response, to ensure they are cached by upstream caches. Defaults to 10MB (10 * 1024 * 1024). See #1581 for context.  | 
| Example | ELECTRIC_LOG_CHUNK_BYTES_THRESHOLD=20971520 | 
ELECTRIC_LOG_OTP_REPORTS 
| Variable | ELECTRIC_LOG_OTP_REPORTS | 
| Default | false | 
| Description | Enable OTP SASL reporting at runtime.  | 
| Example | ELECTRIC_LOG_OTP_REPORTS=true | 
ELECTRIC_PORT 
| Variable | ELECTRIC_PORT | 
| Default | 3000 | 
| Description | Port that the HTTP API is exposed on.  | 
| Example | ELECTRIC_PORT=8080 | 
Caching 
ELECTRIC_CACHE_MAX_AGE 
| Variable | ELECTRIC_CACHE_MAX_AGE | 
| Default | 60 | 
| Description | Default   | 
| Example | ELECTRIC_CACHE_MAX_AGE=5 | 
ElECTRIC_CACHE_STALE_AGE 
| Variable | ELECTRIC_CACHE_STALE_AGE | 
| Default | 300 | 
| Description | Default   | 
| Example | ELECTRIC_CACHE_STALE_AGE=5 | 
Storage 
ELECTRIC_PERSISTENT_STATE 
| Variable | ELECTRIC_PERSISTENT_STATE | 
| Default | FILE | 
| Description | Where to store shape metadata. Defaults to storing on the filesystem. If provided must be one of   | 
| Example | ELECTRIC_PERSISTENT_STATE=MEMORY | 
ELECTRIC_STORAGE 
| Variable | ELECTRIC_STORAGE | 
| Default | FILE | 
| Description | Where to store shape logs. Defaults to storing on the filesystem. If provided must be one of   | 
| Example | ELECTRIC_STORAGE=MEMORY | 
ELECTRIC_STORAGE_DIR 
| Variable | ELECTRIC_STORAGE_DIR | 
| Default | ./persistent | 
| Description | Path to root folder for storing data on the filesystem.  | 
| Example | ELECTRIC_STORAGE_DIR=/var/example | 
Telemetry 
ELECTRIC_OTLP_ENDPOINT 
| Variable | ELECTRIC_OTLP_ENDPOINToptional | 
| Description | Set an OpenTelemetry endpoint URL to enable telemetry.  | 
| Example | ELECTRIC_OTLP_ENDPOINT=https://example.com | 
ELECTRIC_OTEL_DEBUG 
| Variable | ELECTRIC_OTEL_DEBUG | 
| Default | false | 
| Description | Debug tracing by printing spans to stdout, without batching.  | 
| Example | ELECTRIC_OTEL_DEBUG=true | 
ELECTRIC_HNY_API_KEY 
| Variable | ELECTRIC_HNY_API_KEYoptional | 
| Description | Honeycomb.io api key. Specify along with   | 
| Example | ELECTRIC_HNY_API_KEY=your-api-key | 
ELECTRIC_HNY_DATASET 
| Variable | ELECTRIC_HNY_DATASEToptional | 
| Description | Name of your Honeycomb Dataset.  | 
| Example | ELECTRIC_HNY_DATASET=your-dataset-name | 
ELECTRIC_PROMETHEUS_PORT 
| Variable | ELECTRIC_PROMETHEUS_PORToptional | 
| Description | Expose a prometheus reporter for telemetry data on the specified port.  | 
| Example | ELECTRIC_PROMETHEUS_PORT=9090 | 
ELECTRIC_STATSD_HOST 
| Variable | ELECTRIC_STATSD_HOSToptional | 
| Description | Enable sending telemetry data to a StatsD reporting endpoint.  | 
| Example | ELECTRIC_STATSD_HOST=https://example.com |