Quick Apps configuration
Quick Apps is set up in four places: the two services' environment variables, the DIAL Core configuration, and DIAL Chat. This page maps each setting to its place and gives a Docker Compose sample that runs both services. It is for platform engineers who add Quick Apps to a DIAL deployment. It assumes you know the two Quick Apps services.
Where each setting lives
| Place | What it sets | Reference |
|---|---|---|
| Backend environment variables | The DIAL Core URL, the default orchestrator, tool and file limits, external URL egress, the preview gate, and telemetry | Backend |
| Frontend environment variables | The DIAL Core URL, the session and identity provider, iframe embedding, and the editor's options | Frontend |
| DIAL Core configuration | The Quick Apps application type schema, the editor URL, and the Quick App applications defined by an administrator | DIAL Core and DIAL Chat |
| DIAL Chat environment variables | Permission for Chat to open the editor in an iframe | DIAL Core and DIAL Chat |
Each Quick App also has its own manifest, applicationProperties, with the orchestrator, contexts, Toolsets, and features. The manifest fields are in the Quick App manifest.
Docker Compose sample
This sample adds both services to a Docker Compose deployment that already runs DIAL Core, DIAL Chat, DIAL Chat Themes, and Keycloak. It is a starting point, not a production setup. For a complete local deployment, see ai-dial-samples.
| Service | Address |
|---|---|
| DIAL Chat | http://localhost:8055 |
| DIAL Admin | http://localhost:8056 |
| Quick Apps Frontend | http://localhost:8057 |
| Keycloak | http://keycloak.localhost:8058 |
The sample uses localhost on purpose. Browsers scope cookies to the host, not the port, so Chat, DIAL Admin, and the editor all see each other's cookies on localhost. The editor's own cookie names keep its session apart.
The Quick Apps services
services:
quickapps-backend:
image: epam/ai-dial-quickapps-backend:0.13.2
environment:
DIAL_URL: "http://core:8080"
DEFAULT_ORCHESTRATOR_DEPLOYMENT_ID: "<DEFAULT_MODEL_ID>"
APP_SCHEMA_ID: "https://mydial.epam.com/custom_application_schemas/quickapps2"
LOG_LEVEL: "INFO"
QUICKAPP_LOG_LEVEL: "INFO"
ENABLE_PREVIEW_FEATURES: "false"
quickapps-frontend:
image: epam/ai-dial-quickapps-frontend:0.3.1
ports:
- "127.0.0.1:8057:5000"
environment:
PORT: "5000"
API_PREFIX: "api"
DIAL_CORE_URL: "http://core:8080"
AUTH_SESSION_SECRET: "<64_HEX_CHARACTERS>"
AUTH_CALLBACK_BASE_URL: "http://localhost:8057"
CORS_ORIGIN: "http://localhost:8057"
# Local HTTP only: drops the __Host- cookie prefix, which needs HTTPS
AUTH_COOKIE_SECURE: "false"
# Cookie names apart from Chat and DIAL Admin, which share the localhost site
AUTH_SESSION_COOKIE_NAME: "quickapps.sess"
AUTH_TRANSACTION_COOKIE_NAME: "quickapps.tx"
AUTH_KEYCLOAK_HOST: "http://keycloak.localhost:8058/realms/dial"
AUTH_KEYCLOAK_CLIENT_ID: "dial-quickapps"
AUTH_KEYCLOAK_SECRET: "<KEYCLOAK_CLIENT_SECRET>"
AUTH_KEYCLOAK_DIAL_ROLES_FIELD: "roles"
DEFAULT_DEPLOYMENT: "<DEFAULT_MODEL_ID>"
THEMES_CONFIG_URL: "http://themes:8080"
# Chat and DIAL Admin may frame the editor
ALLOWED_IFRAME_ORIGINS: "http://localhost:8055,http://localhost:8056"
# The code interpreter, web fetch, and attachment options are off: those tools are not deployed here
CUSTOM_CLIENT_VARIABLES: '{"allowedOrigin":["http://localhost:8055","http://localhost:8056"],"dialChatHost":"http://localhost:8055","dialAdminHost":"http://localhost:8056","codeInterpreterEnabled":false,"webFetchEnabled":false,"addAttachmentEnabled":false}'
DEFAULT_ORCHESTRATOR_DEPLOYMENT_IDandDEFAULT_DEPLOYMENTname a model in DIAL Core that supports tools.- In Keycloak, the
dial-quickappsclient takeshttp://localhost:8057/api/v1/auth/callback/keycloakas its redirect URI.
DIAL Chat
Chat must be allowed to frame the editor:
services:
chat:
image: epam/ai-dial-chat:1.2.14
ports:
- "127.0.0.1:8055:5000"
environment:
# ...the rest of the Chat configuration
ALLOWED_IFRAME_ORIGINS: "http://localhost:8057"
DIAL Core
Register the application type in the DIAL Core configuration. The schema comes from the backend, and dial:applicationTypeEditorUrl points DIAL Chat to the editor:
{
"applicationTypeSchemas": [
{
"dial:applicationTypeDisplayName": "Quick App 2.0",
"dial:appendApplicationPropertiesHeader": false,
"dial:applicationTypeAssistantAttachmentsInRequestSupported": true,
"dial:applicationTypeCompletionEndpoint": "http://quickapps-backend:5000/openai/deployments/quick_apps2/chat/completions",
"dial:applicationTypeConfigurationEndpoint": "http://quickapps-backend:5000/openai/deployments/quick_apps2/configuration",
"dial:applicationTypeSchemaEndpoint": "http://quickapps-backend:5000/v1/configuration-support/application-schema",
"dial:applicationTypeEditorUrl": "http://localhost:8057",
"dial:applicationTypeRoutes": {
"configuration_support_read": {
"dial:paths": ["/v1/configuration-support(/[^/]+)*$"],
"dial:methods": ["GET"],
"dial:rewritePath": true,
"dial:permissions": ["WRITE"],
"dial:upstreams": [{ "dial:endpoint": "http://quickapps-backend:5000" }]
},
"configuration_support_skill_validate": {
"dial:paths": ["/v1/configuration-support/skills/validate$"],
"dial:methods": ["POST"],
"dial:rewritePath": true,
"dial:permissions": ["WRITE"],
"dial:upstreams": [{ "dial:endpoint": "http://quickapps-backend:5000" }],
"dial:attachmentPaths": { "dial:requestBody": ["@.url"] }
}
},
"$id": "https://mydial.epam.com/custom_application_schemas/quickapps2",
"$schema": "https://dial.epam.com/application_type_schemas/schema#"
}
]
}
What each property does is in DIAL Core and DIAL Chat.