Open-source project
HelgeSverre/ollama-gui avatar
HelgeSverre/ollama-gui

ollama-gui: a Vue front end for a local Ollama server, and where its proxy stops

A Web Interface for chatting with your local LLMs via the ollama API

1,258 stars161 forksVueMIT

At a glance

What is it?
ollama-gui is a browser chat client for models served by Ollama. The interesting part is not the chat window but the split between its development proxy and its production build, which decides whether it works at all on your network.
Who is it for?
Adopt ollama-gui if you want a browser chat window over an Ollama instance you already run, and you are willing to solve the origin question yourself, either with OLLAMA_ORIGINS, a reverse proxy, or the bundled compose.yml. Skip it if you need a model library browser, mobile layout or file uploads, since the roadmap lists all three as unchecked, and skip it if you cannot expose an Ollama HTTP endpoint to a browser at all.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 40 days ago.
What is it written in?
Mainly Vue, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem is the gap between a terminal and a chat window

Ollama itself is a command line tool and an HTTP server. You pull a model, you run ollama serve, and you talk to it through the terminal or through whatever client you write. That is fine for testing a prompt. It is poor for reading a long answer, copying a code block, or keeping a scrollback you can return to. ollama-gui fills that gap with a Vue single page application that talks to the Ollama HTTP API and renders replies as Markdown. The README describes it as a modern web interface for chatting with your local LLMs through Ollama. The intended user is someone who already has Ollama installed and a model pulled, and who wants a persistent, formatted conversation view without sending prompts to a third party. The privacy claim in the feature list is that all processing happens locally, which is true in the sense that the model runs on your machine; the browser tab is still a browser tab, and chat history is stored in IndexedDB on the client rather than on a server.

Vue, Vite and a dev-only proxy that hides the CORS question

The stack is Vue.js for the interface, Vite as the build tool, Tailwind CSS for styling, VueUse for composition utilities and @tabler/icons-vue for icons. The README credits LangUI as design inspiration and Vercel as the host for the demo. Chat history lives in IndexedDB, which is why conversations survive a page reload without any backend database. Messages are rendered with Markdown support, which matters more than it sounds: model output is full of fenced code blocks and lists, and a plain textarea makes that output hard to read. The mechanism worth understanding is the development proxy. When you run the dev server, Vite forwards API requests to your local Ollama instance, so the browser never makes a cross-origin request and CORS never enters the picture. The README states this proxy is only available during development with yarn dev, and that for production deployments you need to configure CORS on Ollama or put a reverse proxy in front of it. That single sentence is the whole deployment story, and it is the part people miss.

Running it: yarn dev, OLLAMA_ORIGINS, or compose.yml

Local development follows a short sequence from the README. Pull a model and start the server with ollama pull mistral followed by ollama serve, then clone the repository, run yarn install and yarn dev. Node.js v16 or later and Yarn are the stated prerequisites for local work. To reach the interface from another device on the same network, the README gives yarn dev --host and notes you then browse to your machine's IP on port 5173. If you point the GUI at a different Ollama endpoint, set VITE_NO_PROXY=true yarn dev to switch the proxy off. The hosted demo at ollama-gui.vercel.app requires the opposite arrangement: start Ollama with OLLAMA_ORIGINS=https://ollama-gui.vercel.app ollama serve so the server accepts requests from that origin. For a self-hosted production build, the same variable takes your own domain, or you place nginx, Apache or Caddy in front and forward /api. The Docker path avoids the question entirely. docker compose up -d starts Ollama and the GUI together and serves the interface on http://localhost:8080, with no proxy or CORS configuration needed. Models land in ./ollama_data in the repository, a path you can change inside compose.yml. To add a model in that setup, the README says to run docker exec -it ollama bash and then ollama pull <model_name> inside the container, followed by docker compose restart. GPU users are told to uncomment a deploy block in compose.yml that reserves NVIDIA devices, which means the default compose file runs CPU-only until you edit it.

The production build has no proxy, and that is the failure mode

yarn build produces static files. Those files contain no proxy server, as the README says plainly. So the moment you move off yarn dev, every request from the page to Ollama becomes a cross-origin request, and Ollama will reject it unless you have set OLLAMA_ORIGINS to match the page's origin or routed the calls through a reverse proxy. This is the most common way a working local setup breaks on a server. A second limitation is scope. The roadmap lists a model library browser and installer, mobile-responsive design, and file uploads with OCR support as unchecked items. Chat history, Markdown formatting and code cleanup are checked. Read that as the current boundary: you cannot browse or install models from the interface, the layout is not described as mobile-ready, and you cannot attach a file. If your workflow involves dragging a PDF into a chat, this is the wrong tool today. A third point is that the project has no retrieved releases, so there is no versioned artifact to pin; you are tracking the main branch or building from source. The README also does not document authentication of any kind, which is consistent with a tool meant for a local machine or a trusted network, but it should stop you from putting an unauthenticated Ollama endpoint on a public address.

Against Open WebUI and the terminal, the difference is where the state lives

The obvious alternative is Open WebUI, which also presents a browser chat interface over local models. The architectural difference is where the server sits. Open WebUI runs as a Python application with its own backend, user accounts and server-side persistence, so it can manage multiple users and store conversations centrally. ollama-gui is a static Vue bundle whose only state store is IndexedDB in your browser, and whose only backend is Ollama itself. That makes ollama-gui cheaper to host (a static directory plus an Ollama process) and easier to reason about, because there is no application server to patch. It also means conversations do not follow you between browsers or devices, and there is no shared workspace. The other alternative is simply the ollama run command in a terminal. That has zero deployment surface and no origin rules to satisfy, but it gives you no Markdown rendering, no scrollback you can search, and no history across sessions. Choose based on whether you want a server or a static page. If you need accounts or central history, ollama-gui is the wrong shape.

Licence, maintenance and what upgrading actually costs

The project is released under the MIT License, with the licence text in LICENSE.md. MIT is permissive: you can use, modify and redistribute the code, including in commercial settings, provided the copyright notice and permission notice are retained. That is a description of the licence text, not legal advice, and if you are embedding the interface in a product you should read LICENSE.md and take your own counsel. On maintenance, the material gives one concrete signal: the most recent push to the default branch is dated 2026-08-06, and no releases were retrieved. The roadmap shows unfinished items, which suggests active but incomplete work rather than a frozen project. The practical upgrade cost is low in one respect and awkward in another. Low, because there is no server component to migrate and no database schema; you rebuild the static bundle and redeploy. Awkward, because without tagged releases you cannot pin a version, so an upgrade means moving to a specific commit and reading the diff. Chat history in IndexedDB is tied to the browser origin, so if you change the domain the interface is served from, existing conversations stay behind on the old origin. Plan a stable hostname before you accumulate history you care about.

Editorial conclusion

Adopt ollama-gui if you want a browser chat window over an Ollama instance you already run, and you are willing to solve the origin question yourself, either with OLLAMA_ORIGINS, a reverse proxy, or the bundled compose.yml. Skip it if you need a model library browser, mobile layout or file uploads, since the roadmap lists all three as unchecked, and skip it if you cannot expose an Ollama HTTP endpoint to a browser at all. Before committing, run the Vite build and load the static output against your own Ollama host with the correct OLLAMA_ORIGINS value set, because that is the configuration the hosted demo does not exercise for you.

Official sources

  1. HelgeSverre/ollama-gui on GitHub
  2. Issues
  3. License: MIT
  4. Project website
  5. README
Community notes

Community notes