# Conversation Layer This module contains the services that handle messaging for WhatsApp and the web chat interface. All source code is now written in **TypeScript**. It is composed of four containers: - **openwa** – provides access to WhatsApp through the [open-wa](https://github.com/open-wa/wa-automate-nodejs) project. - **whatsapp-router** – receives webhook events from openwa and forwards messages to a conversation handler. Handlers can be configured per chat ID in `whatsapp-router/src/chatHandlers.ts`. - **chat-ui** – simple web chat interface that also communicates with the LLM agent. - **conversation-layer-agent** – lightweight agent that uses the Gemini SDK to answer questions about this repository. All services can be launched together with `docker-compose`. ## Usage 1. Configure the URL of your LLM agent in `docker-compose.yml` (`LLM_AGENT_URL`). 2. Set your Gemini API key in `.env` (`GEMINI_API_KEY`) so the conversation-layer-agent can use the Gemini SDK. 3. Optionally edit `whatsapp-router/src/chatHandlers.ts` to map specific chat IDs to different handler URLs or local handlers. By default the chat ID `50498554225@c.us` is mapped to a built‑in *HelloWorld* agent for testing and `repo-helper@c.us` talks to the conversation-layer-agent. 4. Run: ```bash docker-compose up --build ``` The chat UI will be available on [http://localhost:3000](http://localhost:3000). Open-wa exposes its API on port `8080` and the WhatsApp router listens on port `3001`. Alternatively you can run the chat UI and router locally using Make: ```bash make chat # start chat-ui make router # start whatsapp-router make agent # start conversation-layer-agent ``` Both targets read configuration from a `.env` file if it exists (see `.env.example`).