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
| Variable | Default | Description |
|---|---|---|
DIAL_URL | — | Required. The URL of the DIAL Core API. |
DIAL_API_VERSION | 2025-01-01-preview | The API version for calls to DIAL Core. |
APP_SCHEMA_ID | https://mydial.epam.com/custom_application_schemas/quickapps2 | The $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_SECONDS | 120.0 | How 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_HEADER | accept-language | The request header that carries the locale for stage names. Change it when a reverse proxy rewrites Accept-Language. |
Agent
| Variable | Default | Description |
|---|---|---|
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_ITERATIONS | 15 | The maximum number of orchestrator iterations. There is no unlimited setting. |
SHOW_USAGE_STATISTICS | false | Includes usage statistics in the chat completion stream. |
SHOW_EXECUTION_TIME_STAGE | false | Shows an execution time stage. |
ALLOW_OVERRIDE_SYSTEM_MESSAGE | false | When 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
| Variable | Default | Description |
|---|---|---|
DEFAULT_TOOL_TIMEOUT_SECONDS | 300.0 | The 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_LIMIT | 10485760 | The 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_DEFERRAL | 10 | The 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
| Variable | Default | Description |
|---|---|---|
TOOL_CALL_RESULT_OFFLOAD__ENABLED_BY_DEFAULT | true | The 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_THRESHOLD | 40000 | The 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
| Variable | Default | Description |
|---|---|---|
EXTERNAL_URL_FETCH_ENABLED | false | The 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_REDIRECTS | 5 | The maximum number of redirects, at most 10. Each one is checked for SSRF. |
EXTERNAL_URL_FETCH_CONNECT_TIMEOUT_SECONDS | 5.0 | The TCP connect timeout. The other timeouts follow the tool timeout. |
Skills
| Variable | Default | Description |
|---|---|---|
DIAL_SKILLS_FILE_MAX_BYTES | 262144 | The maximum size of one file read from a DIAL skill resource, SKILL.md included. A larger SKILL.md drops the skill. |
DIAL_SKILLS_MAX_FILES | 200 | The maximum number of bundled files listed to the agent per DIAL skill resource. |
DIAL_SKILLS_LISTING_MAX_PAGES | 10 | The maximum number of file-listing pages read per DIAL skill resource. |
SKILL_INVOCATION_MAX_SKILLS | 10 | The 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_MESSAGE | 5 | The 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
| Variable | Default | Description |
|---|---|---|
PY_INTERPRETER_LOCAL_RUN | false | false 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_URL | DIAL_URL | Base 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_RETRIES | 3 | The 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
| Variable | Default | Description |
|---|---|---|
ENABLE_PREVIEW_FEATURES | false | Turns 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_MAPPING | Built-in mapping | A JSON mapping of predefined system prompts to the DIAL deployments they suit. |
Logging
| Variable | Default | Description |
|---|---|---|
LOG_LEVEL | INFO | The level of every logger except the Quick Apps loggers. |
QUICKAPP_LOG_LEVEL | INFO | The level of the Quick Apps loggers. |
DIAL_SDK_LOG_FORMAT | text | The console format: text, or json with one record per line. |
DIAL_SDK_TEXT_LOG_FORMAT | Built-in | A custom %-style format string for text output. |
DIAL_SDK_JSON_LOG_FORMAT | Built-in | A custom template for json output. |
LOG_PAYLOADS | false | Logs message bodies, tool arguments, and responses at DEBUG, cut to LOG_PAYLOADS_MAX_LENGTH per field. |
LOG_PAYLOADS_MAX_LENGTH | 2000 | The 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.
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.
| Variable | Default | Description |
|---|---|---|
OTEL_SERVICE_NAME | quickapps | The 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_ENDPOINT | http://localhost:4317 | The OTLP/gRPC collector for every signal. The other standard OpenTelemetry SDK variables work as usual. |
OTEL_EXPORTER_PROMETHEUS_PORT | 9464 | The 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.
| Variable | Use instead |
|---|---|
PREDEFINED_BASE_PATH | PREDEFINED_EXTRA_PATHS |
PY_INTERPRETER_CLIENT_TIMEOUT | DEFAULT_TOOL_TIMEOUT_SECONDS, or tool_defaults.timeout_seconds |
LOG_FORMAT | DIAL_SDK_TEXT_LOG_FORMAT, or DIAL_SDK_LOG_FORMAT=json |
LOG_DATE_FORMAT | Nothing; the timestamp format is fixed |
OTEL_PYTHON_LOG_CORRELATION | Nothing; 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
- Frontend — the editor's environment variables
- DIAL Core and DIAL Chat — register the backend in DIAL Core
- ChatHub — the predefined templates these variables extend
- Quick Apps capabilities: Tools — how tool calls run, appear in Chat, fail, and time out
- DIAL Code Interpreter configuration — settings that enable Python calculations for agents
- Quick Apps capabilities: Skills — where skills come from and how the agent uses them