Synclet is configured entirely through environment variables. Set them in your shell, a .env file, Docker Compose, or Kubernetes Secrets. Every command also accepts --dotenv <file> (repeatable) to load environment files first.
Base64-encoded 32-byte AES key for stored connector credentials. Back it up: stored secrets cannot be decrypted without it.
required outside local development
Synclet generates the two secrets only for local development: ENVIRONMENT unset or development, outside a container. There it creates an ephemeral AUTH_JWT_SECRET (sessions end on every restart) and persists an encryption key to <UserConfigDir>/synclet/encryption.key, logging a warning for each. Anywhere else, including a container or a Kubernetes pod, the process refuses to start until both are set.
Synclet listens on two ports: the public server (UI and API) and the internal server (executor API and the /live, /ready probes). Each takes the same set of variables with the prefix PUBLIC_HTTP_SERVER_ or INTERNAL_HTTP_SERVER_.
Variable
Description
Default
PUBLIC_HTTP_SERVER_ADDR
Public UI and API listen address.
0.0.0.0:8080
INTERNAL_HTTP_SERVER_ADDR
Executor API and probe listen address. Must differ from the public one.
0.0.0.0:8081
*_READ_TIMEOUT
Maximum time to read a request; 0s means no limit.
0s
*_READ_HEADER_TIMEOUT
Maximum time to read request headers.
10s
*_WRITE_TIMEOUT
Maximum time to write a response; 0s means no limit.
0s
*_IDLE_TIMEOUT
Keep-alive idle timeout.
120s
*_TLS_ENABLED
Serve TLS on this port.
false
*_TLS_CERT_PATH, *_TLS_KEY_PATH
Certificate and key files.
empty
*_TLS_CLIENT_AUTH, *_TLS_CLIENT_CA_PATH
Client certificate verification mode and CA bundle.
empty
*_TLS_APPEND_SYSTEM_CAS_TO_CLIENT
Trust the system CAs in addition to the client CA bundle.
false
RATE_LIMIT_TRUSTED_PROXIES
Comma-separated IPs or CIDR ranges of reverse proxies whose X-Forwarded-For and X-Real-IP headers identify the client for the login and register rate limits.
Defaults for connector containers and pods. A source or destination overrides them in its runtime config.
Variable
Description
Default
PIPELINE_RUNTIME_CPU_REQUEST
CPU request.
empty
PIPELINE_RUNTIME_CPU_LIMIT
CPU limit.
empty
PIPELINE_RUNTIME_MEMORY_REQUEST
Memory request.
empty
PIPELINE_RUNTIME_MEMORY_LIMIT
Memory limit.
empty
PIPELINE_RUNTIME_SERVICE_ACCOUNT_NAME
Kubernetes service account of connector pods; empty uses the namespace’s default account. A source or destination overrides it with service_account_name. See Kubernetes: service accounts.
Configure one or more OIDC providers for single sign-on. Set AUTH_OIDC_PROVIDERS to a comma-separated list of provider slugs, then configure each provider with AUTH_OIDC_<SLUG>_* variables.
Variable
Description
AUTH_OIDC_PROVIDERS
Comma-separated list of provider slugs (e.g., google,okta). Required to enable OIDC.
AUTH_OIDC_CALLBACK_BASE_URL
Base URL for OIDC callback redirects. Required when AUTH_OIDC_PROVIDERS is set.
You can configure multiple providers by adding slugs to AUTH_OIDC_PROVIDERS (e.g., google,okta) and setting the corresponding AUTH_OIDC_<SLUG>_* variables for each.
Scratch directory for connector config, catalog and state. Leave empty when running the binary natively (the OS temp dir is used). When Synclet runs in a container that talks to the host docker.sock, set it to a host-bind-mounted path that is identical inside and outside the container.
empty
DOCKER_EXECUTOR_LOCAL_ROOT
Host directory mounted at /local in every connector container, where file-writing destinations leave their files. Shared by all jobs and never cleaned. Empty gives each job its own /local, removed with the job. Like DOCKER_EXECUTOR_TEMP_DIR_ROOT, a containerised Synclet needs it mounted at the same path from the host.
Used by synclet k8s-executor, and by synclet server --standalone inside a pod.
Variable
Description
Default
K8S_EXECUTOR_NAMESPACE
Namespace for connector pods.
empty
K8S_EXECUTOR_KUBECONFIG
Kubeconfig path; empty uses the in-cluster config.
empty
K8S_EXECUTOR_IMAGE_PULL_SECRET
Image pull secret for private registries.
empty
K8S_EXECUTOR_LOCAL_VOLUME_CLAIM
Existing PersistentVolumeClaim mounted at /local in the connector containers, where file-writing destinations leave their files (Helm: k8s.localVolume). Empty mounts a per-pod emptyDir.
empty
K8S_EXECUTOR_SYNCLET_IMAGE
Synclet image of the orchestrator container in sync pods.
empty
K8S_EXECUTOR_SERVER_ADDR
Internal server address the orchestrator containers call.
Previous encryption key, kept during key rotation. Synclet decrypts credentials encrypted with it and re-encrypts them with the current key.
empty
Security notes:
Never commit secrets to version control.
Use a secret manager (HashiCorp Vault, AWS Secrets Manager, Kubernetes Secrets, Doppler) in production.
After rotating AUTH_JWT_SECRET, all users sign in again. After rotating SECRET_ENCRYPTION_KEY, set the old key as SECRET_ENCRYPTION_KEY_PREVIOUS so existing credentials are re-encrypted.
Airbyte is a trademark of Airbyte, Inc. Synclet is not affiliated with, endorsed by or sponsored by Airbyte, Inc.
Connector images keep their own licenses: see Connector licenses.