# How to Set Up the ODS Chat Interface: Installation and Access Guide

> Learn how to set up the ODS chat interface easily. Install and access ODS chat on port 3000 or your local network with our quick guide.

- Repository: [Osmantic/ODS](https://github.com/Osmantic/ODS)
- Tags: getting-started
- Published: 2026-09-01

---

**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`](https://github.com/Osmantic/ODS/blob/main/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`](https://github.com/Osmantic/ODS/blob/main/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`](https://github.com/Osmantic/ODS/blob/main/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:

```bash
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:

```bash
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`](https://github.com/Osmantic/ODS/blob/main/docs/ODS-PROXY.md) and [`docs/MDNS.md`](https://github.com/Osmantic/ODS/blob/main/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`](https://github.com/Osmantic/ODS/blob/main/docs/POST-INSTALL-CHECKLIST.md).

Test the backend connectivity via CLI:

```bash
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`](https://github.com/Osmantic/ODS/blob/main/docs/HOW-ODS-SERVER-WORKS.md):

1. The Open WebUI frontend (port 3000) sends a request to the LiteLLM endpoint.
2. LiteLLM—implemented in [`extensions/services/dashboard-api/routers/chat.py`](https://github.com/Osmantic/ODS/blob/main/extensions/services/dashboard-api/routers/chat.py)—translates the request to the internal model API format.
3. The query reaches **llama-server** or your configured backend, as detailed in [`docs/MODEL-MANAGEMENT.md`](https://github.com/Osmantic/ODS/blob/main/docs/MODEL-MANAGEMENT.md).
4. 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 install` and runs on port 3000 via Open WebUI.
- **ods-proxy** (enabled by default) provides LAN-wide access through `chat.<device>.local` without requiring port numbers.
- The CLI command `ods chat` offers a quick backend verification method without opening a browser.
- LiteLLM handles API translation in [`extensions/services/dashboard-api/routers/chat.py`](https://github.com/Osmantic/ODS/blob/main/extensions/services/dashboard-api/routers/chat.py), routing requests to local model servers.
- Key configuration files include [`extensions/services/open-webui/compose.yaml`](https://github.com/Osmantic/ODS/blob/main/extensions/services/open-webui/compose.yaml) for the UI service and `extensions/services/ods-proxy/Caddyfile` for 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`](https://github.com/Osmantic/ODS/blob/main/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`](https://github.com/Osmantic/ODS/blob/main/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`](https://github.com/Osmantic/ODS/blob/main/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`](https://github.com/Osmantic/ODS/blob/main/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.