Skip to main content

Quick Apps Backend configuration

The Quick Apps Backend is configured with environment variables. They set deployment-wide defaults and limits; a Quick App's manifest can narrow many of them for that app. This reference is for platform engineers who deploy the backend. It assumes you know how Quick Apps is configured.

Two variables are required: DIAL_URL and DEFAULT_ORCHESTRATOR_DEPLOYMENT_ID. Every other variable is optional.

DIAL Core​

VariableDefaultDescription
DIAL_URL—Required. The URL of the DIAL Core API.
DIAL_API_VERSION2025-01-01-previewThe API version for calls to DIAL Core.
APP_SCHEMA_IDhttps://mydial.epam.com/custom_application_schemas/quickapps2The $id written into the application type schema. Change it when your DIAL installation uses a different host name or schema name; it must match the $id registered in DIAL Core.
DIAL_INTERACTIVE_LOGIN_TIMEOUT_SECONDS120.0How long, in seconds, to wait for the user to sign in when an MCP Toolset returns 401 or an external service asks for sign-in.
PROXY_LANGUAGE_HEADERaccept-languageThe request header that carries the locale for stage names. Change it when a reverse proxy rewrites Accept-Language.

Agent​

VariableDefaultDescription
DEFAULT_ORCHESTRATOR_DEPLOYMENT_ID—Required. The DIAL deployment used as the orchestrator when a manifest leaves out orchestrator.deployment. It is also the schema's default for that field, so new manifests are pre-filled with it.
DEFAULT_AGENT_MAX_ITERATIONS15The maximum number of orchestrator iterations. There is no unlimited setting.
SHOW_USAGE_STATISTICSfalseIncludes usage statistics in the chat completion stream.
SHOW_EXECUTION_TIME_STAGEfalseShows an execution time stage.
ALLOW_OVERRIDE_SYSTEM_MESSAGEfalseWhen false, a request with a non-empty system message is rejected with 400, because the app uses its own system prompt. When true, that message replaces the configured prompt only; skills, MCP resources, and other injected parts are still added. Deployment-wide: apps can't opt out.

With the default false, set "systemPromptSupported": false in each Quick App's features. DIAL Chat then doesn't offer a system prompt field that would fail. See Quick App applications.

Tools and files​

VariableDefaultDescription
DEFAULT_TOOL_TIMEOUT_SECONDS300.0The default timeout of every tool call, in seconds, greater than 0 and at most 3600. Apps override it with tool_defaults.timeout_seconds.
DEFAULT_FILE_LOADING_SIZE_LIMIT10485760The maximum size, in bytes, of a file the agent downloads. Apps override it with features.file_loading.size_limit.
DEFAULT_STAGE_DISPLAY_LEVEL—Overrides every app's stage visibility: none, error, info, or debug. When unset, each app's features.stage_display.level applies; its default is info.
MIN_TOOLS_FOR_DEFERRAL10The minimum Toolset size for dynamic tool discovery. A smaller Toolset is loaded at once, even when it is deferred. Apps override it with orchestrator.tool_discovery.min_tools_for_deferral.

Tool-call results​

VariableDefaultDescription
TOOL_CALL_RESULT_OFFLOAD__ENABLED_BY_DEFAULTtrueThe default of each app's features.dial_files.tool_call_result_offload.enabled. Tool-call result offload is a Preview feature.
TOOL_CALL_RESULT_OFFLOAD__SIZE_THRESHOLD40000The size, in bytes, above which a tool response is saved to a DIAL file.
TOOL_CALL_RESULT_OFFLOAD__EXCLUDED_TOOLS[]A JSON list of tool names that are never offloaded. The read-back tools internal_file_read_lines and internal_file_search are always excluded.

External URL fetch​

VariableDefaultDescription
EXTERNAL_URL_FETCH_ENABLEDfalseThe administrator's switch for fetching non-DIAL URLs. When false, no app can fetch them, whatever its manifest says. An app with features.web_fetch.enabled: true then shows a failed Initialization issues stage on every turn.
EXTERNAL_URL_FETCH_HOST_ALLOWLIST—Comma-separated host patterns, such as example.com or *.example.com. Checked again on every redirect. An app's features.external_url_fetch.host_allowlist can narrow the list but not widen it.
EXTERNAL_URL_FETCH_MAX_REDIRECTS5The maximum number of redirects, at most 10. Each one is checked for SSRF.
EXTERNAL_URL_FETCH_CONNECT_TIMEOUT_SECONDS5.0The TCP connect timeout. The other timeouts follow the tool timeout.

Skills​

VariableDefaultDescription
DIAL_SKILLS_FILE_MAX_BYTES262144The maximum size of one file read from a DIAL skill resource, SKILL.md included. A larger SKILL.md drops the skill.
DIAL_SKILLS_MAX_FILES200The maximum number of bundled files listed to the agent per DIAL skill resource.
DIAL_SKILLS_LISTING_MAX_PAGES10The maximum number of file-listing pages read per DIAL skill resource.
SKILL_INVOCATION_MAX_SKILLS10The maximum number of distinct skills a user can invoke from the messages of one conversation, newest first. Each adds a block to the system prompt and a DIAL Core request per turn.
SKILL_INVOCATION_MAX_SKILLS_PER_MESSAGE5The maximum number of skills used from one message. Extra ones are dropped and reported in the Initialization issues stage. It can't exceed SKILL_INVOCATION_MAX_SKILLS.

DIAL skill resources and skill invocation from a message need DIAL Core 0.48.0 or later.

Python interpreter​

VariableDefaultDescription
PY_INTERPRETER_LOCAL_RUNfalsefalse uses the incoming DIAL request key; true requires and selects PY_INTERPRETER_API_KEY. The client still calls Core-style interpreter session endpoints.
PY_INTERPRETER_URLDIAL_URLBase URL serving /v1/ops/code_interpreter/*, not the raw interpreter container API.
PY_INTERPRETER_API_KEY—Explicit API key required when PY_INTERPRETER_LOCAL_RUN=true.
PY_INTERPRETER_DEFAULT_SESSION_ID—The default interpreter session ID.
PY_INTERPRETER_CLIENT_MAX_RETRIES3The maximum retries of interpreter requests.

The interpreter itself is DIAL Code Interpreter. Its configuration reference covers App Controller, Core session settings, execution limits, and enabling the calculation tool. Credential selection and the unchanged API paths are defined in client construction and the client.

Preview features and templates​

VariableDefaultDescription
ENABLE_PREVIEW_FEATURESfalseTurns on the Preview features, both in the schema and at run time. When false, preview settings in a manifest are ignored.
PREDEFINED_EXTRA_PATHS—A JSON list of folders of predefined templates, layered over the built-in ones; later folders win. A template replaced here changes every app that uses it. See ChatHub.
CONFIG_PROMPT_MAPPINGBuilt-in mappingA JSON mapping of predefined system prompts to the DIAL deployments they suit.

Logging​

VariableDefaultDescription
LOG_LEVELINFOThe level of every logger except the Quick Apps loggers.
QUICKAPP_LOG_LEVELINFOThe level of the Quick Apps loggers.
DIAL_SDK_LOG_FORMATtextThe console format: text, or json with one record per line.
DIAL_SDK_TEXT_LOG_FORMATBuilt-inA custom %-style format string for text output.
DIAL_SDK_JSON_LOG_FORMATBuilt-inA custom template for json output.
LOG_PAYLOADSfalseLogs message bodies, tool arguments, and responses at DEBUG, cut to LOG_PAYLOADS_MAX_LENGTH per field.
LOG_PAYLOADS_MAX_LENGTH2000The character limit per logged payload field.

Logs carry structure, such as roles, counts, names, IDs, and status codes, but never content, at any level. LOG_PAYLOADS=true is the one exception, and content appears only with QUICKAPP_LOG_LEVEL=DEBUG as well.

warning

LOG_PAYLOADS writes conversation content to the logs, including any OTLP export. Use it for local development only, never in shared or production environments.

OpenTelemetry​

Telemetry is off until one of the exporter variables is set.

VariableDefaultDescription
OTEL_SERVICE_NAMEquickappsThe service name on all traces, metrics, and logs.
OTEL_TRACES_EXPORTER—otlp exports spans over OTLP/gRPC, and adds trace context to log records.
OTEL_METRICS_EXPORTER—otlp, prometheus, or both, comma-separated.
OTEL_LOGS_EXPORTER—otlp exports log records at INFO and above.
OTEL_EXPORTER_OTLP_ENDPOINThttp://localhost:4317The OTLP/gRPC collector for every signal. The other standard OpenTelemetry SDK variables work as usual.
OTEL_EXPORTER_PROMETHEUS_PORT9464The port of the Prometheus scrape endpoint, with prometheus in OTEL_METRICS_EXPORTER.

Deprecated variables​

These still work but will be removed in a future major version.

VariableUse instead
PREDEFINED_BASE_PATHPREDEFINED_EXTRA_PATHS
PY_INTERPRETER_CLIENT_TIMEOUTDEFAULT_TOOL_TIMEOUT_SECONDS, or tool_defaults.timeout_seconds
LOG_FORMATDIAL_SDK_TEXT_LOG_FORMAT, or DIAL_SDK_LOG_FORMAT=json
LOG_DATE_FORMATNothing; the timestamp format is fixed
OTEL_PYTHON_LOG_CORRELATIONNothing; trace fields are added to logs whenever tracing is on

Custom CA certificates​

Behind a proxy that re-signs TLS traffic with a corporate root CA, outbound calls fail with CERTIFICATE_VERIFY_FAILED. To trust that CA, mount its PEM certificate, with a .crt extension, under /certificates/, and set USE_SYSTEM_CA_CERTS=1. Every *.crt file there is added to the container's CA bundle at startup.

services:
quickapps-backend:
environment:
USE_SYSTEM_CA_CERTS: "1"
volumes:
- /path/to/corporate-ca.crt:/certificates/corporate-ca.crt:ro

Forwarded headers​

Request headers whose names start with X- are forwarded to every outbound call of that completion: the orchestrator, MCP servers, DIAL deployment tools, and REST API tools. Use them for tracing, such as X-Request-Id, or for tenancy, such as X-Tenant-Id. No setting is needed.

Further reading​