Skip to main content

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​

PlaceWhat it setsReference
Backend environment variablesThe DIAL Core URL, the default orchestrator, tool and file limits, external URL egress, the preview gate, and telemetryBackend
Frontend environment variablesThe DIAL Core URL, the session and identity provider, iframe embedding, and the editor's optionsFrontend
DIAL Core configurationThe Quick Apps application type schema, the editor URL, and the Quick App applications defined by an administratorDIAL Core and DIAL Chat
DIAL Chat environment variablesPermission for Chat to open the editor in an iframeDIAL 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.

ServiceAddress
DIAL Chathttp://localhost:8055
DIAL Adminhttp://localhost:8056
Quick Apps Frontendhttp://localhost:8057
Keycloakhttp://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_ID and DEFAULT_DEPLOYMENT name a model in DIAL Core that supports tools.
  • In Keycloak, the dial-quickapps client takes http://localhost:8057/api/v1/auth/callback/keycloak as 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.