Deployment
Customer builds and catalog
Compile a customer-specific Envoy binary with envoy-builder, choose connector capabilities, and bundle catalog assets for boot-time registration.
Customer builds and catalog
Envoy compiles into a customer-specific standalone executable with a selected set of connectors and, when required, an approved connector catalog. This keeps the runtime self-contained and limits exposed capabilities to those intended for the deployment.
Build configuration is a release-engineering input, not an in-product connector configuration file.
Build configuration
Each customer has a YAML file in build/ (for example build/clonepartner.yaml):
name: clonepartner
include_server: true
branding:
app_name: ClonePartner
logo_url: /branding/clonepartner/logo.png
connections:
- csv
- yaml
- sqlite
- mongodb
- truto
- postgres
catalog:
slugs:
- stripe
- hubspot
out_dir: catalog/clonepartnername— the binary and image name.include_server— bundle the orchestration server and web UI.connections— the connector types compiled into the binary.catalog— optional file-mode catalog bundling: which integration slugs to package and where.
How the build works
bun scripts/envoy-builder.ts <customer> --all --out=distThe builder reads the config, generates a registration entry file (the per-customer equivalent of src/register-all.ts) containing one registerConnector call per selected connector plus the metrics backends (noop, sqlite, statsd, http, mssql), then compiles standalone executables with Bun's compiler for the requested platforms (darwin-arm64, linux-x64, windows-x64). The full development registry in src/register-all.ts covers: azure-blob, csv, yaml, sqlite, truto, cardamom, mongodb, dynamics365, postgres, mysql, mssql, s3, jira, freshdesk.
The executable still receives environment-specific server configuration, secrets, database access, and Connector records at deployment time — nothing customer-account-specific is baked in.
Include every connector type referenced by a promoted bundle: Envoy rejects imported task definitions whose connector types are unavailable, and the validator reports Unknown connector type: '<type>'. Available: <list>.
Catalog connectors at boot
When a deployment configures a catalog — through the cardamom section of envoy-server.yaml or the ENVOY_CATALOG_INTEGRATIONS_DIR / ENVOY_CLOVE_URL environment variables — the server registers one connector type per catalog integration at startup (registerCatalogConnectors in src/connectors/catalog-connector.ts). Those types then appear in the Connector creation UI like any compiled-in type.
Two catalog sources exist:
- File mode — a directory of integration JSON files packaged by the build (
catalog.out_dir, mounted as/app/catalog/<customer>/in Docker) and pointed at withintegrations_dir. - Catalog service — a remote catalog reached through
clove_url, which requiresclove_token(clove_token is required when clove_url is set for catalog registration).
Registration can be disabled with cardamom.enabled: false. The config keys and their environment overrides are listed in Server configuration; connected-account behavior is documented in Catalog connectors and connected accounts.
Extending a deployment
To add capabilities to an existing deployment:
- New compiled connector or step — requires a new build. Connectors extend
BaseConnectorand register in the build's entry file; steps extendBaseStep. Plan this as an application upgrade. - New catalog integration — for file-mode catalogs, ship updated catalog assets and restart; for a catalog service, publish the integration there. No recompilation is needed, because catalog types are registered at boot.
Keep catalog assets and runtime configuration separate. Catalog definitions describe available capabilities; Connector records identify a particular account with its non-secret settings and secret references. Never put customer credentials in build configuration, catalog definitions, compiled assets, task or job-template YAML, or release archives.
Verify a release
In a non-production environment:
- verify executable checksum and platform;
- start the control plane with a fresh test configuration;
- confirm the expected connector types appear and unapproved types do not;
- open the catalog-backed Connector forms and create a test Connector;
- run one paged discovery request;
- import representative Tasks with dry-run enabled;
- run a bounded end-to-end Job;
- record the release and catalog versions.
If a catalog path is mounted separately, verify the runtime account can read it and all executor instances receive the same version.
Upgrade planning
Treat a connector or catalog change as an application upgrade: review configuration-schema changes, verify renamed or removed methods, validate existing task definitions, test connected-account selection, and preserve a rollback artifact. Changing a catalog does not migrate stored Connector records — review existing configurations after an upgrade.
Related
- Catalog connectors and connected accounts — using catalog types day to day
- Seed import — how bundled tasks and jobs reach the database
- Bundles: export and import — promoting definitions between environments