DIAL (Deterministic Integrator of Applications and Language Models) is an open-source, enterprise-grade AI platform by EPAM. Its only required component, DIAL Core, exposes a single OpenAI-compatible Unified API to language and embedding models from any vendor and to the applications and agents built on top of them. Access control, cost limits, and observability are managed in one place. Add DIAL Chat for end users, DIAL Admin for administrators, and model adapters to connect providers.
This repository is the source of the DIAL documentation published at docs.dialx.ai. It also holds ready-to-run examples:
docs/— documentation pages, built with Docusaurusdocs/releases/— release notes and upgrade guides for each DIAL releasedial-docker-compose/— minimal Docker Compose setups used by the quick-start tutorialsdial-docker-compose-advanced/— production-like stacks with Keycloak, DIAL Admin, and several model adaptersdial-cookbook/— Jupyter notebooks that call models and applications through the Unified APIdial-samples/— sample UIs for DIAL applicationsdial-sdk/— the DIAL SDK, included as a Git submodule
Launch DIAL Chat with a sample Echo application (requires Docker Compose 2.20.0 or later):
git clone https://github.com/epam/ai-dial.git
cd ai-dial/dial-docker-compose/application
docker compose upOpen http://localhost:3000, select Echo in the Marketplace, and send a message. The application replies with your prompt. To connect a real model, follow the local run tutorials.
Start with the page that matches your goal:
DIAL is developed in separate repositories in the EPAM GitHub organization, grouped below by role. Each repository's README explains how to build, run, and configure that component. For a visual map, see DIAL open source.
| Repository | Description |
|---|---|
| DIAL Core | The central and only required component. An API gateway that exposes the Unified API to models, applications, and toolsets, and enforces authentication, access control, and rate limits |
Adapters translate the Unified API into the API of each model provider.
| Repository | Description |
|---|---|
| DIAL OpenAI Adapter | Models from Azure OpenAI and OpenAI Platform |
| DIAL Bedrock Adapter | Language and embedding models from AWS Bedrock |
| DIAL Vertex AI Adapter | Language and embedding models from Google Vertex AI |
| DIAL Anthropic Adapter | Python package that serves Claude models through the Unified API; used by the OpenAI, Bedrock, and Vertex AI adapters |
| DIAL-to-DIAL Adapter | Forwards requests from one DIAL Core to another, for example to develop locally against a remote DIAL |
| Repository | Description |
|---|---|
| DIAL Chat | The default web UI: chat with models and applications, and manage conversations, prompts, and files |
| DIAL Chat Themes | Images, fonts, and color palettes that restyle DIAL Chat without rebuilding its image |
| DIAL Chat Overlay | Library that embeds DIAL Chat in any web page; part of the DIAL Chat repository |
DIAL Admin is the web console for managing DIAL configuration, access, and deployments.
| Repository | Description |
|---|---|
| DIAL Admin Frontend | Web UI of DIAL Admin |
| DIAL Admin Backend | DIAL Admin API. Stores configuration in a database and generates DIAL Core config files |
| DIAL Deployment Manager Backend | Builds and deploys MCP servers, interceptors, and other images to Kubernetes from DIAL Admin |
| DIAL Deployment Manager MCP Proxy | Proxy images that let the Deployment Manager run stdio-based MCP servers |
| DIAL Evaluation Framework Backend | Manages evaluation test suites, runs, and results for models and applications |
| DIAL Evaluation Metrics | Calculates metrics that compare model output with ground-truth data for the Evaluation Framework |
| Repository | Description |
|---|---|
| DIAL Helm | Helm charts to deploy DIAL to Kubernetes, with examples for AWS, Azure, and GCP. Stable DIAL releases are published here |
| DIAL Analytics Realtime | Reads DIAL Core logs, analyzes conversations, and writes usage metrics to InfluxDB |
| DIAL Log Parser | Converts DIAL Core logs into Parquet datasets organized by deployment and date |
| DIAL Keycloak Helpers | Keycloak extensions that add user attributes from external identity providers, such as job title from Microsoft Graph, to token claims |
| Repository | Description |
|---|---|
| DIAL SDK | Python framework for building DIAL applications and model adapters |
| DIAL Python Client | Python client for the Unified API: chat completions, files, and applications |
| DIAL TypeScript SDK | TypeScript client for DIAL Core: models, files, conversations, prompts, and applications |
| DIAL RAG Eval | Python library that calculates retrieval and generation metrics for RAG pipelines |
Interceptors run custom logic on requests and responses, for example to mask personal data or apply guardrails.
| Repository | Description |
|---|---|
| DIAL Interceptors SDK | Python framework for building interceptors for chat completion and embedding models |
| Google Model Armor Interceptor | Detects, de-identifies, and re-identifies personal data with Google Cloud |
| Repository | Description |
|---|---|
| DIAL RAG | Answers questions about documents users attach (PDF, DOCX, PPTX, TXT, and more) using several retrieval methods |
| Generic RAG Backend | Application runner that answers questions from a pre-indexed document collection, with a configurable pipeline |
| Generic RAG Frontend | Web UI for Generic RAG |
| Deep Research Backend | Agent that clarifies a question, agrees on a research plan, and researches it with Generic RAG tools |
| Quick Apps Backend | Quick Apps 2.0: build applications by combining DIAL tools, REST APIs, and MCP servers, with an LLM as the orchestrator |
| Quick Apps Frontend | Quick Apps settings editor, embedded in DIAL Chat |
| Mind Map Studio Backend | Builds interactive knowledge graphs from documents, URLs, and other sources |
| Mind Map Studio Frontend | Web UI of Mind Map Studio |
| Code Interpreter | Runs Python code in a Jupyter kernel |
| Bing Grounding | Adds web search through Azure AI Agent with Grounding with Bing Search, for Azure-restricted environments |
| DIAL Memory | Long-term memory for agents, exposed as MCP tools and stored in the user's DIAL storage |
| OpenAPI to MCP | Turns an OpenAPI 3.x document into MCP tools |
Services that build and host the Python applications users create as Code Apps.
| Repository | Description |
|---|---|
| App Controller | Builds Python applications from DIAL storage into container images and deploys them to Kubernetes as Knative services |
| App Builder Python | Downloads application source code from DIAL storage and prepares it for the image build |
| Repository | Description |
|---|---|
| DIAL UI Kit | React components for building DIAL interfaces |
| DIAL React File Manager | React file manager for DIAL applications, built on the DIAL UI Kit |
| DIAL React PDF Highlighter | React PDF viewer with highlights, built on PDF Highlighter Kit |
| Repository | Description |
|---|---|
| DIAL CI | Reusable GitHub Actions workflows for DIAL repositories |
| DIAL ORT Config | OSS Review Toolkit configuration for DIAL repositories |
| DIAL Perf | Gatling performance tests for DIAL Admin |
These projects are archived or approaching end of life. They stay available for reference.
| Repository | Description |
|---|---|
| DIAL Chat 0.x | Previous version of DIAL Chat, including the legacy Overlay and Visualizer Connector libraries. Receives fixes until the end of 2026 |
| DIAL Auth Helper | Archived. Replaced by DIAL Keycloak Helpers |
| DIAL Assistant | Archived. Assistant based on the ChatGPT plugin protocol |
| DIAL LangChain Integration | Archived. Helpers for passing DIAL-specific fields through LangChain |
-
Read CONTRIBUTING.md for the contribution process, release cadence, and coding principles.
-
To fix or add documentation, edit the files in
docs/and preview the site locally. You need Node.js 22 or later and Quarto, which renders the cookbook notebooks:npm install npm start
-
Report vulnerabilities as described in SECURITY.md.
-
Ask questions on Discord.
This project is licensed under the Apache License 2.0.