Personal
$10/month
- 50M tokens a week
- 20 requests per minute
- For one person
Your team asks the same questions every week. Host a chat app, load the handbook, and let it answer with the passage it found. Pareto writes those answers. It is Unbiased’s model: it selects frontier and open models for each request and blends their outputs into one answer.
Tested live with Open WebUI 0.12.3Shared apps go on Team
Each of these talks to Pareto with a base URL, an API key and the model string pareto. Pick the one you already use.
Each app below keeps the users, the chat history and the document index on your server. Pareto only sees the question and the passages the app picked. The Open WebUI tab is what we ran; the other tabs follow each app’s own documentation.
Choose a plan, then create a key in the Unbiased platform. New accounts are reviewed and approved by a person before the key works. A chat app shared by a team belongs on Team, which is pay as you go.
Install it with pip or Docker, following its own guide. Users sign in to your instance, not to Unbiased, and their chats stay in its database.
Base URL https://api.unbiased.ai/v1, your Unbiased key, and the model name pareto typed by hand: /v1/models is not published, so don’t rely on the model list.
The app turns your documents into embeddings so it can search them. Unbiased does not serve /v1/embeddings, so leave that job on the app’s local model (Open WebUI and Onyx do this by default) or on an embedding provider you choose.
Upload a handbook, connect a Drive folder or point it at a wiki. Ask something only the documents know, then check the answer against the passage it cites.
pareto. Open WebUI listed pareto from environment variables alone and, called with an Open WebUI API key, answered three questions from an uploaded team handbook with the right facts, 9 answers out of 9 over 3 runs; all 9 cited the handbook with [1]. Run record.The first three variables add Pareto before the first launch, model ID included, so nobody has to type it into the admin panel. ENABLE_API_KEYS lets you create an Open WebUI API key under Settings > Account for the API call below. Then create a Knowledge base, upload your files and type # in a chat to attach it.
all-MiniLM-L6-v2 by default, so documents are indexed on your serverpip install open-webui==0.12.3
export OPENAI_API_BASE_URL=https://api.unbiased.ai/v1
export OPENAI_API_KEY=your-unbiased-api-key
export OPENAI_API_CONFIGS='{"0": {"enable": true, "model_ids": ["pareto"]}}'
export ENABLE_OLLAMA_API=False
export ENABLE_API_KEYS=True
export WEBUI_SECRET_KEY=your-secret-key
open-webui serveWorkspace > Knowledge > Create Name: Team handbook Upload handbook.md and wait for processing to finish New chat > model pareto Type # and pick Team handbook, then ask your question
curl -X POST http://localhost:8080/api/chat/completions \
-H "Authorization: Bearer your-open-webui-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "pareto",
"stream": false,
"messages": [{"role": "user", "content": "I got paged at 23:30 last night. What time can I start today?"}],
"files": [{"type": "collection", "id": "your-knowledge-id"}]
}'The variables are read on the first launch and then stored, so change the connection later under Settings > Admin > Connections. The bearer token is an Open WebUI API key (it starts with sk-), not your Unbiased key. Our test sent the request above from a Python script with the same JSON body and an Open WebUI API key.
Add Unbiased under endpoints.custom in librechat.yaml. File search goes through LibreChat’s RAG API, which embeds with OpenAI by default, so point it at an embedding provider of your own.
librechat.yaml through docker-compose.override.yml on Docker# Use the config version for your release.
version: 1.3.17
endpoints:
custom:
- name: 'Unbiased'
apiKey: '${UNBIASED_API_KEY}'
baseURL: 'https://api.unbiased.ai/v1'
models:
default: ['pareto']
fetch: false
titleConvo: true
titleModel: 'pareto'
modelDisplayLabel: 'Pareto'UNBIASED_API_KEY=your-unbiased-api-key
# File search: embeddings from Ollama, not Unbiased
RAG_API_URL=http://host.docker.internal:8000
EMBEDDINGS_PROVIDER=ollama
OLLAMA_BASE_URL=http://host.docker.internal:11434
EMBEDDINGS_MODEL=nomic-embed-textservices:
api:
volumes:
- ./librechat.yaml:/app/librechat.yaml
# Full RAG API image, needed for Ollama embeddings
rag_api:
image: registry.librechat.ai/librechat-ai/librechat-rag-api-dev:latest
# On Linux:
# extra_hosts:
# - "host.docker.internal:host-gateway"Run ollama pull nomic-embed-text first, then restart with docker compose down && docker compose up -d. Docs: LibreChat RAG API.
Onyx indexes the apps you connect, such as Google Drive and Confluence, with a local embedding model, then sends the passages it finds to the language model. Add Unbiased as a custom provider and make Pareto the default model.
nomic-embed-text-v1, run by Onyx itselfProvider: openai API Key: your-unbiased-api-key API Base URL: https://api.unbiased.ai/v1 API Version: (leave empty) Display Name: Unbiased # Models > Add Model Model Name: pareto Display Name: Pareto Input Type: Text Only # Models Access: All Users & Agents # Then choose Pareto under Default Model
Use the LiteLLM card, where you type the model name. The other Custom Models card fetches the list from /models, which Unbiased does not publish. Docs: Onyx custom inference provider.
Add Unbiased as its own provider in the app, so LobeHub’s OpenAI provider stays free for embeddings. Its knowledge base embeds with OpenAI’s text-embedding-3-small by default.
Provider ID: unbiased
Provider Name: Unbiased
Request Format: OpenAI
Proxy URL: https://api.unbiased.ai/v1
API Key: your-unbiased-api-key
# Then Create Custom AI Model
Model ID: pareto
Model Display Name: Pareto
Model Type: Chat
Maximum Context Window: 1000000
Support for Tool Calling: onOPENAI_API_KEY=your-openai-api-key DEFAULT_FILES_CONFIG=embedding_model=openai/text-embedding-3-small
If you point OPENAI_PROXY_URL at Unbiased instead, keep in mind that the default embeddings use that same OpenAI provider. Docs: LobeHub knowledge base.
> How much do we pay for a week on call, and when does the rotation start? On-call engineers receive a $200 stipend for each week they are on call, and the rotation runs from Monday 09:00 to Monday 09:00 Central time [1]. > I got paged at 23:30 last night. What time can I start today? Since you were paged at 23:30, which is after 22:00, you may start today at 11:00 [1]. > Can I buy a $600 monitor and expense it without asking anyone? No, you cannot buy a $600 monitor and expense it without asking anyone. According to the Northwind Field Services Team Handbook, any purchase over $500 requires written approval from your manager before you buy it [1].
In our test each answer took 846 to 1,144 tokens, input plus output as the API reported, with a one-page handbook. Most of that is the passages the app sends with each question, so longer documents, more passages and long chats cost more.
Personal and Personal Max are for one person. A chat app your whole team uses belongs on Team, which runs on prepaid credits at the published rates with no weekly token cap, and production use needs a written agreement. Platform teams can start here. Run record.
Pick a monthly allowance, or pay per token on Team.
$10/month
$100/month
Pay as you go
Subscriptions are for one person and are not unlimited. New API accounts are reviewed by a person before access turns on, and commercial or production use needs a separate written agreement. Rates and limits are on Pricing.
No. The chat app searches its own index and sends the question with the few passages it picked. In our Open WebUI test that was about 700 input tokens per question. Your files, the index and the chat history stay on your server.
Search works on embeddings, and Unbiased does not serve /v1/embeddings: it returned HTTP 404 when we checked on October 20, 2026. Open WebUI and Onyx embed with a local model by default. LibreChat’s RAG API and LobeHub’s knowledge base default to OpenAI embeddings, so give them a provider that serves embeddings.
Team. Personal and Personal Max are for one person, and one key on a shared server serves everyone who signs in. Team is pay as you go with no weekly token cap, and production use needs a separate written agreement. Platform teams can start here.
In our Open WebUI test, every answer cited the handbook with a [1]. Onyx lists its sources under each answer. Check a few answers against the source before you tell your team to trust it.
Only Open WebUI 0.12.3, with the knowledge base attached to the chat: 9 of 9 answers had the right facts. We also attached the knowledge base to a workspace model, where Open WebUI 0.12.3 gives Pareto search tools; Pareto called them, but we could not run that tool loop outside the browser. LibreChat, Onyx and LobeHub follow their docs. Format compatibility is not a promise that every feature works, so tell us if one doesn’t.
Requests over your plan’s limits return an HTTP 429 error. Personal includes 50M tokens a week and 20 requests per minute. Personal Max raises that to 600M a week and 60 requests per minute for $100/month. Team uses prepaid pay-as-you-go credits with no weekly token cap.
No. You send every request to one model string, pareto. Pareto selects frontier and open models for each request and blends their outputs into one answer.
Personal and Personal Max are not our zero data retention tier: prompts and responses may be kept up to 30 days, as section 5(c) of the Terms explains. For work that must not be kept, ask about the Zero Data Retention API on the Private AI page.
Same key, same model string, different job. See every use case. Or find your tool on Works with.
Product names belong to their owners. Unbiased is not affiliated with or endorsed by the makers of the tools on this page.
One chat app, your documents and an API key. Pareto starts at $10 a month for one person, and Team is pay as you go.