How to Set Up the ODS Chat Interface: Installation and Access Guide
The ODS chat interface deploys automatically on port 3000 during installation and is accessible via http://localhost:3000 or LAN-wide at http://chat.<device>.local when the ods-proxy extension is enabled.
The ODS chat interface provides the primary user-facing web UI for the Open-Source AI Stack (ODS), allowing browser-based interaction with local large language models. This guide details the complete setup process and network configuration using the official Osmantic/ODS repository source code.
Architecture Overview
The chat stack consists of four coordinated services defined in the repository. According to extensions/services/open-webui/compose.yaml, the Open WebUI container serves the HTML/JS frontend on port 3000. The ods-proxy extension—enabled by default—runs Caddy on port 80 to route hostnames like chat.<device>.local to the UI, as configured in extensions/services/ods-proxy/Caddyfile. For inference, LiteLLM exposes an OpenAI-compatible /v1/chat/completions endpoint implemented in extensions/services/dashboard-api/routers/chat.py, which forwards requests to the underlying llama-server or configured model backend described in docs/MODEL-MANAGEMENT.md.
Installation and Initial Setup
Running the Installer
The installation process deploys all necessary services including the chat UI. Execute the official installer from the Osmantic/ODS repository:
curl -fsSL https://raw.githubusercontent.com/Osmantic/ODS/main/install.sh | bash
This downloads the ods/ods-cli entry point and supporting extensions.
Starting the Services
After installation, run the interactive setup command to select your GPU tier, download models, and start the Docker services:
ods install
Upon completion, the installer outputs the local access URL:
Open your browser and navigate to http://localhost:3000 # chat UI
Accessing the ODS Chat Interface
Once services are running, you can reach the interface through two primary methods depending on your network configuration.
Localhost Access
For direct browser access on the host machine, navigate to:
http://localhost:3000
LAN-Wide Access via ODS-Proxy
When the ods-proxy extension is active (default configuration), the Caddyfile maps chat.<device>.local to the Open WebUI container. As documented in docs/ODS-PROXY.md and docs/MDNS.md, the proxy also redirects the bare hostname <device>.local to the chat subdomain for streamlined first-time access:
http://chat.<device>.local # LAN-wide, no port required
Verifying Functionality
Confirm the deployment using the verification steps outlined in docs/POST-INSTALL-CHECKLIST.md.
Test the backend connectivity via CLI:
ods chat "Hello, are you working?"
Then verify browser accessibility by navigating to either the localhost or LAN URLs. If the proxy is enabled, both endpoints serve the same Open WebUI instance running on port 3000.
Backend Request Flow
Understanding the data path helps troubleshoot connectivity issues. When you submit a message in the chat UI, the request flows through the stack as described in docs/HOW-ODS-SERVER-WORKS.md:
- The Open WebUI frontend (port 3000) sends a request to the LiteLLM endpoint.
- LiteLLM—implemented in
extensions/services/dashboard-api/routers/chat.py—translates the request to the internal model API format. - The query reaches llama-server or your configured backend, as detailed in
docs/MODEL-MANAGEMENT.md. - The response streams back through LiteLLM to the browser interface via the standard chat completion payload.
Summary
- The ODS chat interface is automatically configured during
ods installand runs on port 3000 via Open WebUI. - ods-proxy (enabled by default) provides LAN-wide access through
chat.<device>.localwithout requiring port numbers. - The CLI command
ods chatoffers a quick backend verification method without opening a browser. - LiteLLM handles API translation in
extensions/services/dashboard-api/routers/chat.py, routing requests to local model servers. - Key configuration files include
extensions/services/open-webui/compose.yamlfor the UI service andextensions/services/ods-proxy/Caddyfilefor hostname routing.
Frequently Asked Questions
What is the default port for the ODS chat interface?
The Open WebUI service listens on port 3000 by default, as defined in extensions/services/open-webui/compose.yaml. The ods-proxy extension routes traffic from port 80 to this internal port when using the LAN hostname.
How do I access the chat UI from another device on my network?
Ensure the ods-proxy extension is enabled (default), then navigate to http://chat.<device>.local where <device> is your hostname. This relies on mDNS broadcasting configured in docs/MDNS.md and the Caddyfile routing rules in extensions/services/ods-proxy/Caddyfile.
Which component provides the OpenAI-compatible API endpoint?
LiteLLM provides the /v1/chat/completions endpoint, implemented in extensions/services/dashboard-api/routers/chat.py. This allows the Open WebUI frontend to communicate with various model backends using standard OpenAI client libraries.
Where is the Docker service for the chat UI defined?
The service definition resides in extensions/services/open-webui/compose.yaml. This file configures the container image, port mapping (3000), and networking integration with the rest of the ODS stack.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →