DIAL Chat
DIAL Chat is the web interface of DIAL: users hold conversations with models and agents, browse the Catalog, build Quick Apps, and share and publish their work. It is a React application served by its own backend-for-frontend (BFF), which owns sign-in, configuration, and every call to DIAL Core. This page is for platform engineers who deploy and configure DIAL Chat; it describes the current Chat, version 1.x.
For how to use Chat, see the Chat User Guide.
How DIAL Chat is built
| Part | What it is |
|---|---|
| Frontend | A React single-page application. |
BFF (chat-api) | A NestJS server. It serves the frontend, signs users in through OpenID Connect, keeps the session in an encrypted HttpOnly cookie, and calls DIAL Core on the user's behalf. The browser never talks to DIAL Core directly and never holds an access token. |
| Libraries | The interface is built from reusable packages, such as the composer, the message list, and the Catalog, so a host can restyle or replace a piece without forking the app. The controls, the file manager, and the PDF viewer come from the DIAL UI libraries. |
Chat 1.x is a rewrite, not an upgrade, of the legacy Chat 0.x: the interface, the package layout, and many environment variables changed. The legacy Chat is maintained until the end of 2026. To move a deployment, follow the Legacy Chat Migration Guide.
What DIAL Chat depends on
| Dependency | What Chat uses it for | Configured by |
|---|---|---|
| DIAL Core | Every model, application, toolset, file, and conversation | DIAL_CORE_URL, see Server and DIAL Core |
| Identity provider | Sign-in. At least one provider must be configured. | Authentication |
| DIAL Chat Themes | Colors, logos, and icons | THEMES_CONFIG_URL, see DIAL Chat Themes |
| DIAL Scheduler | Scheduled tasks, when they are turned on | Features and UI |
Container images
Each release publishes three images with the same tags:
| Image | Contents |
|---|---|
epam/ai-dial-chat | The BFF, the frontend, and the overlay sandbox |
epam/ai-dial-chat-bff | The BFF only, for a frontend hosted elsewhere. Non-API routes such as / answer 404. |
epam/ai-dial-chat-mcp-app-sandbox | The sandbox proxy for MCP Apps, deployed on a separate origin |
The images run on Node.js 24 and start directly with node; they contain no npm or npx.
Ports and endpoints
| Interface | Default | Configured by |
|---|---|---|
| HTTP: the frontend and the BFF API | Port 5000; the API under /api | PORT, API_PREFIX |
| Health check | GET /api/health | — |
| Prometheus metrics | Port 9464, path /metrics, on 127.0.0.1 | Observability |
| Overlay sandbox | /overlay-sandbox/, when turned on | OVERLAY_SANDBOX_ENABLED |
All routes except /api/* and /overlay-sandbox/* serve the frontend, so frontend routes such as /catalog work on reload.
Embed Chat in another application
DIAL Chat can run inside another web page as an iframe, driven by the @epam/ai-dial-chat-overlay library. See Chat Overlay.
Deployment
- Kubernetes: deploy Chat with the DIAL platform chart. See Cloud deployment for installation steps.
- Docker Compose: to try Chat on your own machine, run ai-dial-samples — DIAL in Docker with small open-source models, so you need no API keys and no cloud account. To build your own Docker Compose setup, see Local setup.