Each setting has exactly one YAML key and one environment variable. For every
setting the first of these that supplies a value wins:
the environment;
the YAML file named by --cfg (or EASYP_CONFIG);
the default compiled into the binary.
An unrecognised key in the YAML file refuses the start, so a typo is an error
rather than a silently ignored setting. The only command-line flag that
overrides a setting is --log-level on service start.
The binary can tell you what applies:
easyp-svc config validate --cfg config.yml # would it start?easyp-svc config print --cfg config.yml --origin # value and source of each settingeasyp-svc config print --cfg config.yml --changed # only what differs from defaults
Without --cfg both resolve from the environment alone, which is how a Helm
deployment is configured. Secrets are printed as a placeholder unless
--show-secrets is given. At every start the service logs the same summary as
one configuration resolved line.
Server certificate (PEM). Empty disables TLS: the gRPC listener is plaintext and logs a warning.
server.tls.key_file
SERVER_TLS_KEY_FILE
string
—
Private key for cert_file.
server.tls.client_ca_file
SERVER_TLS_CLIENT_CA_FILE
string
—
CA bundle; when set, clients must present a certificate signed by it (mutual TLS). Only the CA is checked, not the subject.
server.force_shutdown_after
SERVER_FORCE_SHUTDOWN_AFTER
duration
150s
Hard exit this long after SIGTERM. Must exceed worker_pool.generation_timeout.
server.trusted_proxies
SERVER_TRUSTED_PROXIES
list of CIDRs
—
Peers whose X-Forwarded-For/X-Real-IP are believed. Required behind a proxy, otherwise every caller shares one rate-limit bucket and the audit log records the proxy.
server.max_recv_msg_size
SERVER_MAX_RECV_MSG_SIZE
int
67108864
Largest gRPC request, bytes.
server.max_send_msg_size
SERVER_MAX_SEND_MSG_SIZE
int
67108864
Largest gRPC response, bytes. Must be at least registry.max_output_size.
Concurrent plugin lookups (database read, download on cache miss). Community caps it at 4.
worker_pool.queue_size
WORKER_POOL_QUEUE_SIZE
int
16
Waiting room for lookups and for generations. Beyond it: RESOURCE_EXHAUSTED / SERVER_OVERLOADED.
worker_pool.max_concurrent_generations
WORKER_POOL_MAX_CONCURRENT_GENERATIONS
int
16
Concurrent plugin processes. Community caps it at 16.
worker_pool.generation_timeout
WORKER_POOL_GENERATION_TIMEOUT
duration
120s
Time one plugin run may take, excluding the wait for a slot.
worker_pool.max_retries
WORKER_POOL_MAX_RETRIES
int
2
Extra attempts for errors containing connection refused or temporary failure.
worker_pool.shutdown_timeout
WORKER_POOL_SHUTDOWN_TIMEOUT
duration
30s
Time the pool waits for queued lookups on shutdown.
Community ceilings lower workers and max_concurrent_generations at start and
log <setting> lowered to the licence tier's limit; they do not refuse the
configuration.
PASETO v4.public licence token. Takes priority over license.file.
license.file
LICENSE_FILE
string
—
Path to a file holding the token.
license.public_keys
LICENSE_PUBLIC_KEYS
map key id → hex
—
Ed25519 public keys that may sign licences. Key id "*" verifies any token. Environment form: <kid>:<hex>,<kid>:<hex>. Without a key the token is ignored and the service runs as Community.
license.cache_ttl
LICENSE_CACHE_TTL
duration
5m
How often the token is re-validated (expiry, grace).
OTLP gRPC collector, host:port or http://host:port. Empty: no exporter is built.
telemetry.pyroscope_endpoint
TELEMETRY_PYROSCOPE_ENDPOINT
string
—
Pyroscope server. Empty: no profiling.
telemetry.service_tier
TELEMETRY_SERVICE_TIER
string
—
Tag for traces and profiles when Community and Enterprise deployments share backends. A value that disagrees with the licence tier sets easyp_config_service_tier_mismatch.
Secrets — DB_POSTGRES_DSN, REGISTRY_S3_ACCESS_KEY_ID,
REGISTRY_S3_SECRET_ACCESS_KEY, LICENSE_KEY, AUTH_WRITE_TOKENS — are better
supplied through the environment than written into the file.
This table was generated from the binary's own list of settings
(config.Leaves() in internal/config/fields.go) for v1.0.2: 55 settings.
easyp-svc config print on your version is the authority if they ever disagree.