Reference

Configuration

Operational settings are edited in the web console under Settings. Service settings live in master.env and worker.env beside each executable; the launcher loads the file before starting the service.

Configuration lives in two places. Operational settings (presets, alerts, integrations, user accounts) are edited in the web console under Settings and take effect without a restart. Service settings — addresses, ports, storage, secrets — are read from the environment file: each file is read as environment variables, values set directly in the process environment override the file, and changes take effect when the service is restarted.

Settings in the web console#

The Settings area is four sub-pages behind a navigation rail. Opening Settings from the sidebar — or the root /settings route, which redirects to General — lands on the General sub-page. Non-administrators see only General; the other three sub-pages are administrator surfaces.

Sub-pageRoutePanels
General/settings/generalPer-user: the UI-mode toggle, the theme picker, preferences, account and sign-out, plus the Licensing, Notifications and Localization assets panels.
Operations/settings/operationsAlert channels, presets, recurring jobs, job templates.
Integrations/settings/integrationsMAM, Flow setup and connections, Cloud Burst.
Access/settings/accessUser accounts, API tokens.

General holds the personal settings — the settings rail labels it Personal. Its panels are documented where their subjects are: the theme picker in Themes & appearance, the Licensing panel in Licensing, and the Notifications panel in Notifications.

Operations gathers the panels that shape day-to-day encoding: alert channels (webhook, Slack and email notifications for job and worker events), the preset editor with its live FFmpeg command preview, and — further down the page — recurring jobs and job templates.

The Settings → Operations sub-page showing the Alert channels panel with no channels configured and an Add channel button, and the preset editor listing AAC 128, 256 and 320 kbps presets, each with Edit, Duplicate, History, Dry-run, Export and Delete actions
Settings → Operations: alert channels and the preset editor, with recurring jobs and job templates further down the page.

Integrations holds the MAM panel — connections, deliverable matrices and recent writes — the Flow Production Tracking panel, and Cloud Burst. Saving a MAM or Flow connection requires the matching vault key from Integrations and vault keys; the Flow panel reports itself disabled until TRNSCODE_FLOW_VAULT_KEY is set.

The Settings → Integrations sub-page showing the MAM integrations panel with no connections, deliverable matrices and recent writes, and the Flow Production Tracking panel in the DISABLED state prompting for TRNSCODE_FLOW_VAULT_KEY with a Generate vault key button
Settings → Integrations: MAM connections and the Flow panel, which reports disabled until a vault key is configured.

Access is where administrators create operator and viewer accounts, reset passwords, and issue API tokens for headless use of the REST API. A new user is forced through a password change on first sign-in, and a token's plaintext is shown once, at creation.

The Settings → Access sub-page showing the Users panel with a new-user form (username, password, role) and one existing admin account with role and UI-mode selectors, and the API Tokens panel with a Create token button
Settings → Access: user accounts with per-user role and UI mode, and API tokens for headless scripts.
Note

Two panels from the earlier single-page Settings were removed: the AI selector and the Resolve database panel. Watch-folder management moved out of Settings to its own page at /watch-folders — see Watch folders.

Environment variable naming#

Each variable name is the setting name in upper case, preceded by a service prefix:

ServicePrefixExample
MasterTRNSCODE_The log_level setting is read from TRNSCODE_LOG_LEVEL
WorkerTRNSCODE_WORKER_The worker's log_level setting is read from TRNSCODE_WORKER_LOG_LEVEL
Important

Unrecognized variable names are ignored without an error or a log entry, with one exception: a TRNSCODE_MASTER_-prefixed name outside the three recognized tooling-path variables is flagged with a single warning at master startup. If a setting does not take effect after a restart, verify the prefix and spelling of the variable before investigating further.

Two naming errors account for most misconfigurations:

  • A worker variable placed in master.env, or a master variable placed in worker.env. Each service reads only variables carrying its own prefix.
  • Variables named TRNSCODE_MASTER_<NAME>. Master settings use the TRNSCODE_ prefix alone; the MASTER_ segment is not part of any setting name.

Three variables are exceptions to the prefix rule. They are read directly by the tooling resolvers and are the only supported names of this form:

  • TRNSCODE_MASTER_OIIOTOOL_PATH
  • TRNSCODE_MASTER_OCIOBAKELUT_PATH
  • TRNSCODE_MASTER_OCIO_CONFIG_PATH

Environment file resolution order#

Both executables load their environment file automatically. Three locations are read in order, and later locations override earlier ones:

OrderLocation
1master.env in the current working directory
2master.env beside the executable
3The path in $TRNSCODE_ENV_FILE

This order allows a master.env placed beside the executable to be loaded when the executable is launched directly, with no launcher script. The worker resolves worker.env the same way.

Master — listening#

VariableDefaultPurpose
TRNSCODE_HOST0.0.0.0Interface for the web interface and REST API. 0.0.0.0 accepts connections from the network; 127.0.0.1 restricts to the local machine.
TRNSCODE_PORT7443Port for browser connections to the web interface.
TRNSCODE_GRPC_HOST0.0.0.0Interface workers connect to.
TRNSCODE_GRPC_PORT7444Worker control channel port. The REST / web port is 7443.
TRNSCODE_GRPC_ENABLEDtrueSet to false to run the web interface with no fleet, for example to review history on a machine that must not accept workers.

Master — storage#

TRNSCODE_DATABASE_URLstringoptional

Where jobs, chunks, workers, presets and audit history are stored. The bundled default is a SQLite file inside the bundle folder, which is appropriate for a single master.

default sqlite+aiosqlite:///./data/trnscode.db

The parent directory is created if it does not exist, so any writable path is accepted. This file is the backup target for the deployment. Use master backup rather than copying the file while the service is running.

Master — authentication#

TRNSCODE_JWT_SECRETstringrequired

Signs the session tokens the web interface issues. Anyone who holds this value can create a valid administrator session, so treat the file containing it as a credential.

generate with openssl rand -hex 32
TRNSCODE_ADMIN_USERNAMEstringoptional

Username for the bootstrap administrator account.

default admin
TRNSCODE_ADMIN_PASSWORDstringrequired

Used only on first run, to create the administrator account. Changing it afterwards does not change the stored password; use master reset-admin-password for that.

Master — fleet policy#

TRNSCODE_GRPC_ENROLLMENT_TOKENstringoptional

A shared secret every worker must present to register. An empty value enables open enrollment: any machine that can reach the port may register and wait for approval. Open enrollment is acceptable on an isolated network and is not acceptable on a shared one.

must match each worker's TRNSCODE_WORKER_ENROLLMENT_TOKEN
TRNSCODE_NETWORKING_ALLOW_TIER_2_FOR_TESTINGbooleanoptional

When false, the master refuses any worker whose link is Wi-Fi, cellular or sub-gigabit ethernet. Set true to admit them; each admission is logged as a warning so the override stays auditable.

default false — see Allowing non-wired workers
TRNSCODE_MDNS_ENABLEDbooleanoptional

Advertises the master on the local network so workers locate it without configuration. Disable it on networks where broadcast traffic is not permitted, and set each worker's master address directly instead.

default true

Master — logging#

VariableDefaultPurpose
TRNSCODE_LOG_LEVELINFOVerbosity. Set DEBUG when diagnosing a problem.
TRNSCODE_LOG_JSONfalseEmits structured JSON instead of human-readable lines. Enable it when shipping logs to a collector.
TRNSCODE_LOG_FILE<state-dir>/master.logPath of the durable log file. Every domain log line is written here as JSON — in addition to the console, and surviving a hidden console window — with secrets redacted. This is the file to attach to a support request. The default sits in a .trnscode-master directory beside the executable.

Worker — discovery#

TRNSCODE_WORKER_MASTER_GRPC_TARGETstringoptional

Skips discovery and connects to this address directly. Set it when the worker is on a different subnet from the master, or where mDNS is blocked.

example 192.168.50.101:7444 — the gRPC port, not 7443
TRNSCODE_WORKER_ENROLLMENT_TOKENstringoptional

Required when the master sets an enrollment token. Must match exactly.

TRNSCODE_WORKER_MASTER_CERT_FINGERPRINTstringoptional

Pins the master's certificate fingerprint so the worker refuses any other endpoint. When unset, the worker trusts the first master it contacts, which is acceptable on a controlled network and weak on an uncontrolled one.

lowercase hex, 64 characters

Worker — runtime#

VariableDefaultPurpose
TRNSCODE_WORKER_FFMPEG_BINARYbundledUses a host-installed FFmpeg instead of the tested build in bin/. See the warning below.
TRNSCODE_WORKER_HEARTBEAT_SECONDS5Interval at which the worker reports its status. Longer intervals delay detection of a failed worker.
TRNSCODE_WORKER_RECONNECT_INITIAL_SECONDS1.0Initial retry delay after losing the connection to the master.
TRNSCODE_WORKER_RECONNECT_MAX_SECONDS60.0Ceiling for the backoff between reconnection attempts.
TRNSCODE_WORKER_HEALTH_HOST127.0.0.1Interface for the local health endpoint.
TRNSCODE_WORKER_HEALTH_PORT9443Port for the local health endpoint.
TRNSCODE_WORKER_LOG_LEVELINFOVerbosity.
TRNSCODE_WORKER_LOG_JSONfalseStructured JSON output.
Warning

Every bundle ships the same tested FFmpeg so that all workers produce identical output from identical arguments. Pointing one worker at a different build breaks that guarantee, and the resulting inconsistency appears inside a finished file rather than as an error. Change TRNSCODE_WORKER_FFMPEG_BINARY only for a specific, documented reason, and apply the same change across the entire fleet.

Integrations and vault keys#

Credentials for external systems are encrypted at rest, and the key that encrypts them is environment-only — it is never stored in the database. When the key is not set, the master refuses to save a connection rather than store a secret it cannot protect.

TRNSCODE_FLOW_VAULT_KEYstringrequired for Flow

Encrypts Flow Production Tracking script keys. Saving a Flow connection fails without it.

TRNSCODE_MAM_VAULT_KEYstringrequired for MAM

Encrypts MAM credentials. Required before any MAM connection can be saved.

TRNSCODE_FLOW_ENABLEDbooleanoptional

Exposes the Flow surface. Disabled by default; the Flow routes answer 503 until it is enabled. It can also be switched on at runtime with POST /system/flow:enable, without a restart.

TRNSCODE_PUBLIC_BASE_URLstringoptional

The externally reachable base URL. Behind a reverse proxy, the Flow webhook URL is built from this value. Without it, the master advertises an address that is not reachable from outside the network.

TRNSCODE_EXTERNAL_BASE_URLstringoptional

Overrides the LAN address workers dial for master-mediated transfer. Set it when the address the master detects is not the one workers can route to.

Image, colour and font tooling#

All of these tools ship inside the master executable, so a standard installation requires none of them. Set them only when the deployment must use a site-provided build.

VariableOverrides
TRNSCODE_MASTER_OIIOTOOL_PATHThe bundled OpenImageIO tool used by the EXR paths.
TRNSCODE_MASTER_OCIOBAKELUT_PATHThe bundled LUT baker.
TRNSCODE_MASTER_OCIO_CONFIG_PATHThe bundled ACES studio config.
TRNSCODE_BURNIN_FONT_PATHThe bundled burn-in and slate font.
Important

Burn-in renders on the worker, not the master. When overriding the font on a fleet, use a path on shared storage that every worker can read; a path that resolves only on the master produces jobs that fail on every other machine. Single-host installations require no setting, because the font ships in the executable.

Run master probe-v-deps to see which of these resolve and where.

Security and confinement#

TRNSCODE_STORAGE_BROWSE_ROOTSlistoptional

Confines the file browser and source-preview endpoints to the listed directories. The value is a JSON array of absolute paths; a bare path that is not wrapped in [ ] aborts startup with a configuration error. Unset means unrestricted, a default intended for single-user lab deployments — the master logs a warning at startup while it is unset.

example ["C:/media","D:/media"] — set this for any multi-user or internet-adjacent deployment
TRNSCODE_RESOLVE_DB_DIRECT_LINK_ENABLEDbooleanoptional

Allows the route that writes directly to a Resolve project database. Disabled by default and opt-in by design — see NLE round-trip.

Behaviour and housekeeping#

VariableDefaultEffect
TRNSCODE_RUN_BACKGROUND_SERVICESonBackground timers: rollups, watch folders and reapers. Disabling it stops watch-folder processing.
TRNSCODE_CAPTIONS_PREFLIGHT_STRICToffFails a job when embedded captions are lost, rather than reporting the loss. See Correctness & QC.
TRNSCODE_LOCALIZATION_ASSETS_DIR./data/localization-assetsWhere uploaded dub and subtitle assets are staged.
TRNSCODE_LOCALIZATION_ASSET_TTL_DAYS30Retention period for unreferenced localization assets.

Scheduled backups#

The master can take periodic online backups of its database. The schedule and retention are set in the console under Settings → Operations → Backups; the environment variables below only seed that panel's defaults, and the values saved in the panel win at runtime. The full workflow — the verified archive format, listing and downloading a backup, and restoring one — is on the Backups page.

VariableDefaultEffect
TRNSCODE_BACKUP_ENABLED_DEFAULTfalseWhether scheduled backups start on. Off by default, because the default destination sits on the same volume as the database.
TRNSCODE_BACKUP_INTERVAL_HOURS_DEFAULT24How often a backup is due.
TRNSCODE_BACKUP_KEEP_LAST_DEFAULT7How many archives to retain; older ones are pruned.
TRNSCODE_BACKUP_DESTINATION<db-parent>/backups-scheduledWhere archives are written. Choose a different volume for real protection against a disk failure.
TRNSCODE_BACKUP_MIN_FREE_BYTES1073741824Free-space floor for the pre-write preflight (1 GiB). A backup refuses unless the volume has 2 × (db + wal) + this many bytes free.
TRNSCODE_BACKUP_POLL_INTERVAL_SECONDS300How often the service checks whether a backup is due — not the schedule itself.

Applying changes#

Environment-file settings are read at startup. Edit the file, then restart the affected service: the master for master settings, the relevant worker for worker settings. Changing a master fleet-policy setting does not retroactively admit workers that were already refused; they must attempt registration again.