What you get
- A chat page for every deployed agent at /chat/{environment}/{agentId}
- Token-by-token streaming, rich Markdown, code highlighting and LaTeX math
- Dark and light themes, quick-reply buttons and undo and redo
- URL parameters to hide controls and set the title, for a focused embedded widget
- A demo mode that needs no backend
How it works in EDDI
- Run EDDI. The Chat UI ships inside the EDDI image and the installer includes it.
- Open
/chat/<environment>/<agentId>on your EDDI host. - Adjust it with URL parameters such as
theme,title,hideUndoandhideNewConversation. - To embed it, allow your site's origin with
eddi.chat.frame-ancestors(default'none'), then put the same URL in an iframe on your page.
Configuration
Taken from the EDDI documentation. Placeholders such as your-agent-id are yours to replace.
# an agent in an environment
http://localhost:7070/chat/{environment}/{agentId}
# with an explicit user id
http://localhost:7070/chat/{environment}/{agentId}/{userId}
# a showcase with mock data, no backend needed
http://localhost:7070/chat/demo/showcase<iframe
src="https://your-eddi-server/chat/production/your-agent-id?hideNewConversation=true&theme=dark"
style="width: 400px; height: 600px; border: none; border-radius: 12px;"
></iframe>eddi.chat.frame-ancestors=https://portal.example.comGovernance
- The chat talks to the same conversation API as every other client, so behavior rules, approval gates and the audit ledger apply unchanged.
- With authentication on, the widget needs an access token for the signed-in user, and the backend verifies it on every call.
- Treat any text an agent produces as untrusted output. The Chat UI renders Markdown from the agent.
Good to know
- Embedding the chat on another site requires setting
eddi.chat.frame-ancestorsto that site's origin. Until then browsers refuse to render it in a frame. Everything else EDDI serves refuses framing.
Related integrations
Configuration and behavior on this page follow the EDDI documentation, checked on 2026-10-14. Field names and defaults can change between releases, so confirm them in the docs for your version.