Skip to main content
Fetcher configures itself entirely from the environment. Each service reads its own set. The Manager and the Worker share most variables, and each one owns a few of its own. For local work, make set-env copies each component’s .env.example to .env. In production, set the variables through your orchestrator.
Both services need the same APP_ENC_KEY. The Worker uses it to decrypt datasource credentials and to check the signature on every message the Manager sends. A missing or short key stops the process at startup. The log reads master key too short: got 0 bytes, minimum 32 required, and the service never binds a port.

Both services


Application

MongoDB

MongoDB holds Fetcher’s own metadata: connection records and job records.

RabbitMQ

Multi-tenancy

Startup stops in multi-tenant mode. MULTI_TENANT_ENABLED=true requires MULTI_TENANT_URL, MULTI_TENANT_SERVICE_API_KEY, and MULTI_TENANT_REDIS_HOST. A missing value aborts startup on both services, and the error names the variable. Two MULTI_TENANT_SERVICE_API_KEY_<SERVICE> variables that normalize to the same token also abort startup, and the error names the token. One service’s credential never silently overwrites another’s.

Telemetry

Manager only


The router refuses to build on two security mismatches. It reports tenant middleware requires effective authentication when multi-tenant mode runs with authentication off. It reports auth middleware is enabled but its address is empty when PLUGIN_AUTH_ENABLED=true and PLUGIN_AUTH_ADDRESS is blank. In both cases the Manager does not start.

Worker only


Runtime and events

The Worker fails closed on event configuration. STREAMING_ENABLED unset or false aborts startup with STREAMING_ENABLED=true is required for mandatory job event notifications. A blank RABBITMQ_JOB_EVENTS_EXCHANGE, an empty STREAMING_BROKERS, and an empty STREAMING_CLOUDEVENTS_SOURCE each abort startup the same way, as does a STREAMING_COMPRESSION or STREAMING_REQUIRED_ACKS outside its accepted set. The Worker never falls back to a silent no-op emitter.

Object storage

The Worker writes every stored result to S3-compatible object storage. The endpoint scheme controls TLS, so http:// turns it off. Set result expiry with a lifecycle policy on the bucket. See Deployment.

Message signature compatibility

Internal datasources


Internal datasources are the databases of other Lerian products. Fetcher resolves them without an API-registered connection. You declare each one with a DATASOURCE_{NAME}_* group, where {NAME} is a prefix you choose. The accepted _CONFIG_NAME values are a fixed registry: midaz_onboarding, midaz_transaction, and plugin_crm. Fetcher skips any other name and logs a warning that names both the rejected value and the accepted set. For your own databases, register a connection through the API instead.
A bad value skips the datasource, loudly. An invalid _TYPE, an invalid _SSLMODE, or a missing _HOST or _DATABASE makes Fetcher skip that datasource and log a warning that names the config name and the offending value. Fetcher never downgrades a TLS setting to reach a database.

Next steps


Deployment

Dependencies, queues, storage, scaling, and startup checks.

Security

Master key, derived keys, signing, and host validation.

Observability

Probes, drain behavior, metrics, and tracing.

Getting started

A first extraction, with or without infrastructure.