Skip to content

Open WebUI

Open WebUI is a self-hosted ChatGPT-like web UI, deployable with a single Docker command, open-source and free. It offers full multi-user management + a token billing dashboard + side-by-side multi-model comparison.

Key positioning: Compared with Chatbox as a "desktop app," Open WebUI is a web service (so friends / family / a team can share a single API balance at the same time). It is far heavier than Chatbox in features — RAG / Pipelines / function calling / per-user quotas are all built in.

Who it's for: Anyone who needs to deploy an AI assistant for a team/household with a shared balance; who wants fine-grained control over each user's quota; and who is willing to self-host with Docker.

This tutorial: Spin up an Open WebUI instance with Docker, add claude-api.org as an OpenAI-compatible connection, and share it across all users.

A self-hosted ChatGPT-like UI, ideal for multi-user sharing and private household/team deployments.

Any service speaking the OpenAI ChatCompletions protocol works. A combined setup:

  • Primary: OpenAI (GPT-5)
  • Secondary: Claude Official (any client) (2.0x) / Budget Claude (0.5x, quality relatively unstable) / Claude Sonnet Discount (0.5x, Sonnet only) — Open WebUI is not a Claude Code client, so you cannot use the Claude Official (Claude Code only) (1.4x) channel
  • Long text / images: Gemini

You can configure multiple "model connections" inside Open WebUI and let users switch between them from a dropdown.

Installation

bash
docker run -d -p 3000:8080 \
  --name open-webui \
  -v open-webui-data:/app/backend/data \
  ghcr.io/open-webui/open-webui:main

Open http://localhost:3000 to complete the initial registration.

Configuration

Admin account → avatar in the top-right corner → Admin PanelSettingsConnections:

Add an OpenAI-Compatible Connection

Click + to add a new connection:

FieldValue
URLhttps://claude-api.org/v1
Keysk-your-key (bound to an OpenAI channel)
Model IDsgpt-5.4, gpt-5.4-mini, gpt-5.5, gpt-5.3-codex

Add an Anthropic Connection

You'll need to install Open WebUI's Anthropic adapter pipe. The simpler approach: add another OpenAI-compatible connection and call Claude as if it were OpenAI (our backend converts the protocol for you):

FieldValue
URLhttps://claude-api.org/v1
Keysk-key-bound-to-Claude-Official-(Any-Client)-channel
Model IDsclaude-opus-4-7, claude-sonnet-4-6, claude-haiku-4-5-20251001

One Key, One Connection

Don't mix Claude and OpenAI keys into the same connection, or model routing will get confused. Creating one connection per channel is the cleanest approach.

Verification

Back in the chat interface, the model dropdown in the top-left should show models like gpt-5.4. Send a test message to confirm it replies.

Multi-User Scenarios

Open WebUI comes with built-in user management + a billing dashboard. However, billing accuracy depends on the model price settings:

  • Admin Panel → Models → find the model → Edit → fill in the input/output price per 1M tokens
  • The Channels & Pricing page publishes the real-time unit price for each model; copy the corresponding numbers into Open WebUI's model price fields

FAQ

The model dropdown is empty

  • The Connection URL must end with /v1
  • Click the Refresh button to the right of the connection to re-fetch the model list
  • Still empty: enter the container and check the logs with docker logs open-webui | tail -50, searching for "claude-api"

Streaming output flickers / repeats

Open WebUI's rendering support for Claude's think token blocks is still catching up. As a temporary workaround: check "Disable streaming" when sending a message.

Image generation reports JSONResponse / body_iterator

Open WebUI 0.9.5's built-in image endpoint treats the result as a plain JSON response, so don't add stream: true to the image parameters. If you already added it, remove it and retry.

For complex image generation, reference images, and image editing, we recommend the "Image Generation" tool in this site's sidebar instead; Open WebUI is better suited for conversation, multi-user setups, and model switching.

Can I rate-limit a user after they've used up their own quota?

Yes. Admin Panel → Users → individual user → set a token quota / rate limit. This stacks on top of our backend's rate limiting.

For more, see the FAQ.

This site is an API reverse-proxy service, not affiliated with Anthropic / OpenAI / Google.