Run DIAL with the echo application
In this tutorial, you will run a complete DIAL stack locally with Docker Compose and chat with a sample echo application that mirrors every prompt you send. By the end, you will have DIAL Chat open at http://localhost:3000 with a working application registered in DIAL Core. This is the simplest way to verify a DIAL deployment. No cloud account or model API key is required.
Prerequisites
- Docker Engine with Docker Compose v2.20.0 or higher. See the Docker documentation.
- Free TCP ports
3000(DIAL Chat) and8080(DIAL Core) on your machine.
What you'll build
A local DIAL stack — DIAL Core, DIAL Chat, Redis, and chat themes — running the echo application, a small service that repeats whatever you type. The echo application is the canonical "hello world" for the platform: it exercises the full request path from Chat through DIAL Core to a registered application, without depending on any model.
Project structure
The dial-docker-compose/application directory you download looks like this:
application/
├── docker-compose.yml
├── core/
│ └── config.json
└── echo/
├── app.py
├── Dockerfile
└── requirements.txt
The docker-compose.yml includes the shared common.yml base and adds the locally built echo service:
include:
- path: ../common.yml
env_file: ./.env
services:
echo:
build: echo
Step 1: Get the Docker Compose files
Download the dial-docker-compose/application directory from the DIAL repository, or clone the repository and change into it:
git clone https://github.com/epam/ai-dial.git
cd ai-dial/dial-docker-compose/application
Verify: the directory contains docker-compose.yml, a core/ directory, and an echo/ directory.
Step 2: Launch DIAL
From the application directory, start the stack:
docker compose up
Docker pulls the DIAL Core, DIAL Chat, themes, and Redis images, then builds and starts the echo application. The first run takes a few minutes while images download.
Verify: the logs show the core, chat, and echo services started, with no errors.
Step 3: Open DIAL Chat
Open http://localhost:3000 in your browser.
Verify: the DIAL Chat interface loads, and the Catalog is reachable from the left sidebar.
Step 4: Chat with the echo application
- Open the Catalog from the sidebar.
- Select My Echo App.
- Type a prompt and send it.
Verify: the echo application returns your message unchanged. You now have a working DIAL deployment.
How it fits together
DIAL Core reads its configuration from the config.json mounted at core/config.json. The echo application is registered there as an application that DIAL Core exposes through the Unified API:
"echo": {
"displayName": "My Echo App",
"description": "Simple application that repeats user's message",
"endpoint": "http://echo:5000/openai/deployments/echo/chat/completions"
}
A default role grants access to the application, and an API key maps to that role:
"keys": {
"dial_api_key": {
"project": "TEST-PROJECT",
"role": "default"
}
},
"roles": {
"default": {
"limits": {
"echo": {}
}
}
}
Every model and application in DIAL is registered the same way and reached through the same Unified API. That uniformity is what lets any app call any model — or any other app — without custom integration.
What you learned
- How to run a complete DIAL stack locally with Docker Compose
- How to open DIAL Chat and select an application from the Catalog
- How DIAL Core registers an application, a role, and an API key in
config.json
Further reading
- Run DIAL with a self-hosted Ollama model — connect a real chat model with no cloud account
- Quick Start — the ready-made Compose setups and how to run them
- DIAL Core configuration — understand the
config.jsonandsettings.jsonbehind this setup - DIAL Apps overview — build your own application instead of the echo sample