Onyx Self-Hosted: Installation, Licensing and Comparison with Open WebUI

Editorial note: The information in this article was compiled to the best of our knowledge at the time of publication. Technical details, prices, versions, licensing terms, and external content may change. Please verify the information provided independently, particularly before making business-critical or security-related decisions. This article does not replace individual professional, legal, or tax advice.

Onyx on your own network instead of in the cloud? WZ-IT installs and operates Onyx on your infrastructure, connects data sources and local models and takes care of updates and monitoring. More building blocks in the AI hub. Book an appointment
Onyx is an open source platform that pulls company knowledge from many applications into a shared search index and generates AI answers with source citations on top of it. The project was previously called Danswer. It is one of the few open source tools that ship connectors, syncing and permission inheritance from source systems, which makes it a candidate for a self-hosted alternative to Microsoft 365 Copilot or Atlassian Rovo.
This article summarises what the Community Edition covers and what only the Enterprise Edition offers, which connectors exist, what resources Onyx needs, how the Docker Compose installation works, how local models are connected and how Onyx differs from the Knowledge feature in Open WebUI. All details refer to Onyx 4.8.0, as of September 2026.
Table of Contents
- What Onyx is
- Community Edition and Enterprise Edition
- Connectors and permissions
- Onyx system requirements
- Installing Onyx with Docker Compose
- Connecting local models and embeddings
- Onyx compared with Open WebUI Knowledge
- Pitfalls in operation
- Our approach at WZ-IT
- Further guides
What Onyx is
Onyx describes itself as the knowledge and context layer for teams and AI agents (Onyx README). The platform pulls content, metadata and permissions from connected applications, stores them in a hybrid index combining vector and keyword search and makes them available through chat, search and agents. An introduction to the principle is available in What is RAG?.
| Attribute | As of September 2026 |
|---|---|
| Former name | Danswer, copyright holder according to the license: DanswerAI, Inc. |
| Current stable version | 4.8.0 of 23 September 2026 (GitHub Releases) |
| Release cadence | weekly, every Monday the last pre-release becomes stable (Release Process) |
| License | MIT for the Community Edition, Onyx Enterprise License for the ee directories |
| Deployment options | Docker Compose, Kubernetes, Helm, Terraform modules for AWS |
| Document index | OpenSearch (up to version 3 additionally Vespa) |
| Other services | PostgreSQL, Redis, MinIO, two model servers, nginx, code interpreter |
| Language models | including Ollama, LiteLLM Proxy, LM Studio, OpenAI-compatible endpoints, cloud providers |
| Access channels | web and desktop app, Slack and Discord bot, MCP server, Chrome extension, website widget |
Beyond search and chat, Onyx includes Deep Research, custom agents with scoped knowledge, actions via MCP and OpenAPI, web search (among others via SearXNG) and a sandbox for code. For a company knowledge base, connectors, index and permission model are the core. The remaining features can be added later.
Community Edition and Enterprise Edition
Onyx comes in two editions (Onyx README, Licensing). The boundary is clearly drawn in the repository: code in the ee directories (backend/ee, web/src/app/ee, web/src/ee) is covered by the Onyx Enterprise License, everything else by the MIT license (LICENSE). For self-hosted instances, a license is issued after subscribing to a plan and is stored and validated locally; air-gapped environments are supported via manual license upload (Plans & Billing).
| Feature | Community Edition (MIT) | Business | Enterprise |
|---|---|---|---|
| Connectors, AI chat, agents, search, actions | yes | yes | yes |
| One SSO provider (Google, OIDC or SAML) | yes | yes | yes |
| Several SSO providers at the same time | no | yes | yes |
| Inherit permissions from source systems | no | yes | yes |
| Role-based access control (RBAC), group-based permissions | no | yes | yes |
| Query history and usage analytics | no | yes | yes |
| Encryption of stored credentials | no | yes | yes |
| SCIM and group sync | no | no | yes |
| Full white-labeling, custom roles, usage limits | no | no | yes |
Sources for the table: Plans & Billing, SSO Providers and Enterprise Edition. Current prices are listed at onyx.app/pricing.
The Onyx documentation names organisations with more than 100 users, environments that require SSO and instances that must inherit permissions from external systems as typical candidates for the Enterprise Edition. The last point is the one that decides most often in practice: as soon as content with different read permissions flows into a shared index, the Community Edition only works if knowledge areas are cut in advance so that every user group may see everything in them. The reasons are explained in the article on permissions in RAG systems.
Connectors and permissions
The documentation lists 54 official connectors (Connectors Overview). Nearly all of them sync continuously: by default Onyx fetches changes every 30 minutes and removes content that no longer exists in the source every 30 days. Without a start date, the first run reads the entire history of a source, which according to the documentation can take days for large sources.
| Category | Connectors (selection) |
|---|---|
| Wikis and knowledge bases | Confluence (Cloud as well as Data Center and Server), SharePoint and OneDrive, Notion, BookStack, MediaWiki, Outline, GitBook, Discourse, Guru |
| File storage | Google Drive, Dropbox, Box, AWS S3, Google Cloud Storage, Cloudflare R2, Egnyte, Oracle Cloud Storage |
| Tickets and tasks | Jira, Zendesk, Freshdesk, Linear, Asana, ClickUp, Airtable, TestRail, Productboard |
| Communication | Slack, Microsoft Teams, Outlook, Gmail, email via IMAP, Discord, Zulip, XenForo |
| Sales | Salesforce, HubSpot, Gong, Fireflies, Highspot |
| Code | GitHub, GitLab, Bitbucket (Cloud only) |
| Other | web crawler, file upload, Braintrust |
The file connector processes uploaded files in TXT, PDF, DOCX, PPTX, XLSX, CSV, Markdown, JSON, XML, YAML, EML, EPUB and further formats, including as a ZIP archive. A metadata line at the top of a file can carry link, owners, update date and custom tags.
Three access types per connector. A connector is private (only the creator plus assigned users and groups), public (all Onyx users) or set to "Auto Sync Permissions". Only in the last case does Onyx carry over the access lists of the source. This permission sync is an Enterprise Edition feature and is available only for these connectors:
| Connector with permission sync | Additional requirement according to the documentation |
|---|---|
| Confluence, Jira, Salesforce, GitHub, Box, Canvas | none |
| Microsoft Teams, Outlook | none |
| Google Drive, Gmail | service account or Google Workspace admin OAuth |
| SharePoint | certificate-based authentication |
| Slack | Federated Slack connector |
What is missing. The official list contains no connector for Nextcloud, WebDAV or SMB shares (as of September 2026). Organisations whose documents live in Nextcloud are left with the web crawler, file upload or a custom connector built on the Onyx API. None of these routes carries over Nextcloud permissions. The general options for Nextcloud, SharePoint and document management systems are covered in the article on RAG data sources, the combination with Open WebUI in RAG with Nextcloud and Open WebUI.
Onyx system requirements
Onyx has two deployment modes (Deployment Overview). Onyx Standard contains the vector and keyword index, background workers for connectors, two model servers for embeddings and reranking as well as Redis and MinIO. Onyx Lite is a chat interface with agents, file uploads and projects, but without an index. For a knowledge base with connectors, only Standard is an option.
| Resource | Lite minimum | Lite preferred | Standard minimum | Standard preferred |
|---|---|---|---|---|
| CPU | 2 vCPU | 4 vCPU | 4 vCPU | 8 vCPU or more |
| RAM | 2 GB | 4 GB | 10 GB | 16 GB or more |
| Storage | 10 GB | 50 GB | 32 GB plus approx. 2.5 times the indexed data | 500 GB for organisations under 5,000 users |
Source: Resourcing, as of September 2026. For a Kubernetes deployment, the documentation lists these requirements per service:
| Service | CPU | RAM |
|---|---|---|
api_server |
1 | 2 GiB |
background |
2 | 8 GiB |
indexing_model_server |
2 | 4 GiB |
inference_model_server |
2 | 4 GiB |
postgres |
2 | 2 GiB |
opensearch |
2 | 4 GiB |
nginx |
0.25 | 128 MiB |
In total this comes to around 12 CPU and 24 GB RAM. If embeddings are computed through an external API instead of locally, the two model servers need significantly less memory.
How requirements grow with data volume. The main driver is the amount of indexed documents stored in OpenSearch. On-disk storage for a single node without replicas is roughly 1.45 times the source data. For OpenSearch memory, the documentation gives guidance per GB of source data:
| Data volume | RAM per GB of source data | CPU per GB of source data |
|---|---|---|
| under 5 GB | approx. 2 GB | approx. 0.25 |
| 5 to 50 GB | approx. 1.5 GB | approx. 0.25 |
| over 50 GB | approx. 1 GB | approx. 0.2 |
The documentation's worked example: 10 GB of text content means 4 GB base plus 10 × 1.5 GB for OpenSearch, i.e. 19 GB RAM, and 4.5 CPU cores. On a single machine the other services come on top, adding up to at least 9 CPU and 35 GB RAM. The OpenSearch JVM heap should get half of the available memory and must not exceed 32 GB.
These figures cover Onyx only. A local language model runs as a separate service with its own GPU requirements. How much VRAM a given model needs is covered in GPU and VRAM sizing for LLMs.
Installing Onyx with Docker Compose
The documentation describes two ways to install with Docker Compose: the guided installer of the Onyx CLI and the manual setup from the repository.
Option 1: Onyx CLI. The recommended route is onyx-cli deploy install (Quickstart). The install_onyx.sh script only installs the CLI and runs the same command.
uv tool install onyx-cli
onyx-cli deploy install
The installer checks RAM, disk and free ports, installs Docker Engine and the Compose plugin on Linux after confirmation, asks for the deployment mode (Lite or Standard) and the version, creates a .env with randomly generated secrets and starts the containers until all services report healthy (Onyx CLI). The configuration lives in ~/.config/onyx, the data in named Docker volumes.
| Command | Effect |
|---|---|
onyx-cli deploy install --tag v4.8.0 --no-prompt |
Non-interactive installation pinned to a specific version |
onyx-cli deploy upgrade |
Updates compose files, nginx configuration and containers to a newer version |
onyx-cli deploy status |
Versions, containers and health, including the cause for failed services |
onyx-cli deploy logs |
Service logs |
onyx-cli deploy stop |
Stops the containers, data is kept |
onyx-cli deploy uninstall |
Deletes the deployment including all data |
With --offline, Onyx can be rolled out from images already present on the host without network access. This is the basis for isolated environments.
Option 2: manually from the repository (Docker):
git clone --depth 1 https://github.com/onyx-dot-app/onyx.git
cd onyx/deployment/docker_compose
docker compose up -d
After initialisation, Onyx is reachable on port 3000. The compose file of version 4.8.0 starts these services:
| Service | Image or purpose |
|---|---|
api_server, background |
Onyx backend, API and workers for connectors and indexing |
web_server |
web interface |
inference_model_server, indexing_model_server |
embeddings and reranking |
relational_db |
PostgreSQL 15.2 |
opensearch |
OpenSearch 3.6.0 as document index |
cache |
Redis 7.4 |
minio |
object storage for files |
nginx |
reverse proxy, ports 80 and 3000 |
code-interpreter |
sandbox for code execution |
Before going to production. The compose file contains its own checklist (docker-compose.yml). With the manual route, four points in particular remain open:
- Pin the version. The
env.templatesetsIMAGE_TAG=latest. For reproducible operation, a fixed version such asv4.8.0belongs there. - Replace passwords. Without the variable set, OpenSearch starts with the default password from the compose file, and MinIO with default credentials. Set
OPENSEARCH_ADMIN_PASSWORD, the MinIO credentials andUSER_AUTH_SECRETbefore the first start. - Close ports. Apart from nginx, no service should listen externally.
- Set up TLS. Either through the prepared Certbot service or a reverse proxy in front.
The CLI generates secrets automatically and is therefore the cleaner route for new installations. For larger environments there is a Helm chart that lets services scale individually.
Connecting local models and embeddings
Onyx separates two kinds of models: the language model for answers and the embedding model for the index.
Language model. Providers are added in the admin panel under "Configuration → Language Models". For operation without a US cloud, three routes are relevant:
| Route | Setup | Use case |
|---|---|---|
| Ollama | provider "Ollama", address of the instance (default port 11434), available models are fetched | single server, smaller teams |
| LiteLLM Proxy | base URL and API key of the proxy, models come from /v1/models |
one gateway in front of several local models or European APIs |
| Custom Inference Provider | OpenAI-compatible base URL, provider name following the LiteLLM scheme, models added one by one | vLLM or other OpenAI-compatible servers |
For each provider you can define which models are visible and whether it is available to all users or only to specific groups. What a central gateway in front of several models looks like is explained in What is LiteLLM?. If you prefer European model APIs over your own hardware, see the comparison of European LLM APIs.
Embedding model. The embedding model is chosen under "Search Settings" (Index Settings). The source code default is nomic-ai/nomic-embed-text-v1 with 768 dimensions (configs.py), a model trained predominantly on English. The suggested self-hosted models include multilingual variants such as intfloat/multilingual-e5-base and intfloat/multilingual-e5-small (embedding_configs.py); custom models can be connected as well. For German-language content, the choice of embedding model is one of the most important levers, see the comparison of embedding models for German.
Changing the embedding model triggers a full re-index. During the switch, the old model remains active for searches. Model selection therefore belongs at the start of a project, not at the end.
Further search settings. The same page configures reranking, multilingual query expansion, multipass indexing with chunks of different sizes, Contextual RAG and embedding precision (bfloat16 or float). Contextual RAG adds document-level information to every chunk and, according to the documentation, is very expensive to compute. The background is covered in the articles on hybrid search and reranking, contextual retrieval and chunking strategies.
For local embeddings, the Onyx documentation strongly recommends a GPU for the indexing model server. WZ-IT provides managed GPU servers with NVIDIA RTX PRO 4000 Blackwell (24 GB) or RTX PRO 6000 Blackwell (96 GB); for operation on your own network there is the AI Cube.
Onyx compared with Open WebUI Knowledge
Onyx and Open WebUI are often mentioned together but start from different places. Open WebUI is primarily a chat interface for local and remote models whose Knowledge feature ingests documents into knowledge bases (Open WebUI Knowledge). Onyx is primarily a search and knowledge layer across many company sources.
| Criterion | Onyx 4.8 | Open WebUI Knowledge |
|---|---|---|
| Focus | enterprise search, agents and chat over connected sources | chat with models, knowledge bases as an add-on |
| Data ingestion | 54 official connectors in the core, continuous sync | upload, folder sync, separate tool oikb with 44 connectors (from Open WebUI 0.9.6) |
| Permissions from source systems | Enterprise Edition, for 12 connectors | not described in the documentation, access via groups in Open WebUI |
| Permissions in the application | private or public per connector, groups and RBAC in the Enterprise Edition | groups with additive permissions for models, knowledge bases and tools (Groups) |
| Search | hybrid index in OpenSearch, optional reranking, multipass, Contextual RAG | vector search, optionally BM25 plus cross-encoder reranking |
| Index backend | OpenSearch | 13 vector databases, officially maintained ChromaDB and PGVector |
| Resources | Standard from 4 vCPU and 10 GB RAM, eleven services in the compose file | few services, requirements depend mainly on the model |
| License | MIT, ee directories under the Onyx Enterprise License | Open WebUI License (BSD-3-Clause with a branding clause since version 0.6.6) |
| Local models | Ollama, LiteLLM, OpenAI-compatible endpoints | Ollama, OpenAI-compatible endpoints |
Since version 0.6.6, the Open WebUI license prohibits removing the "Open WebUI" branding, except with 50 or fewer users in 30 days, with written permission or with an enterprise license (Open WebUI License).
When Onyx fits: many sources such as Confluence, Jira, SharePoint and Teams need to be searchable together, content changes continuously, and the read permissions of the source systems must apply in the index. The latter requires the Enterprise Edition.
When Open WebUI fits: chatting with local models is the focus, the knowledge bases are manageable and can be cut per group into separate knowledge bases, and resource use should stay low. A comparison of Open WebUI with AnythingLLM is available in Open WebUI vs. AnythingLLM.
The two tools are not mutually exclusive. Onyx can be attached to other clients as a knowledge source through its MCP server, and Open WebUI can use the same models via a gateway in front of them.
Pitfalls in operation
- Upgrading from old versions. Since version 3, Onyx automatically migrates indexed documents from Vespa to OpenSearch. Jumping from a version before 3 directly to 4 loses the index and requires re-indexing all connectors (OpenSearch Migration). The path therefore always leads through version 3.
- Unpinned images. Without a fixed version, the installation pulls the
latesttag. The Onyx documentation recommends staying on the latest stable release and setting versions deliberately. With weekly releases, an update window belongs in the operations plan. - Full disk. OpenSearch sets indices to read-only at 95 percent disk usage. New documents are then no longer indexed. Disk usage belongs in monitoring.
- Initial indexing. Without a start date, a connector reads the full history of the source. For large Confluence or SharePoint estates, a start date or a pilot with a subset makes sense.
- Public connectors. If a connector with access to confidential areas is set up as public, every Onyx user sees that content. In the Community Edition, the scoping of sources has to replace the permission model.
- Re-indexing on model change. Every change of embedding model rebuilds the index and loads the indexing model server accordingly.
Our approach at WZ-IT
We operate Onyx on your infrastructure or on a managed GPU server run by WZ-IT in Germany. Support, consulting and implementation are provided by WZ-IT.
- Clarify sources and permissions. Which systems are connected, which areas stay excluded and whether permissions from the source systems must be inherited. This determines the choice between Community and Enterprise Edition.
- Pilot with real questions. A scoped set of documents with agreed reference questions and source checks, as described in the RAG Proof of Value.
- Installation and hardening. Onyx via Docker Compose or Kubernetes with pinned versions, own secrets, TLS, SSO and closed ports.
- Connect models. Local language model via Ollama or vLLM, an embedding model suited to German content, and optionally a gateway via LiteLLM.
- Ongoing operations. Updates, monitoring of connectors, index and disk usage as well as backups, described on the page Operating Onyx.
If the goal is a chat with knowledge bases rather than a search and agent platform, we use Open WebUI. For a finished assistant with several knowledge areas and roles, there is the internal AI assistant.
Further guides
- Atlassian Rovo alternative self-hosted, wiki and AI layer with permissions under your own control.
- Best embedding models for German, which model finds German documents reliably.
- XWiki AI setup, the XWiki LLM Application with a local model.
- Hybrid search and reranking, why vector search alone is not enough.
- Open WebUI vs. AnythingLLM, the two best-known chat interfaces compared.
- AI solutions by WZ-IT, the hub for local models, GPU servers and RAG.
Introducing Onyx without handing data to third-party clouds? We set up Onyx with your data sources and a local model and, if required, take over ongoing operations. Book an appointment
Sources
- Onyx on GitHub (README)
- Onyx, LICENSE
- Onyx, GitHub Releases
- Onyx Docs, Deployment Overview
- Onyx Docs, Quickstart
- Onyx Docs, Resourcing
- Onyx Docs, Onyx CLI
- Onyx Docs, Docker
- Onyx Docs, Kubernetes
- Onyx Docs, Enterprise Edition
- Onyx Docs, Plans & Billing
- Onyx Docs, SSO Providers
- Onyx Docs, Connectors Overview
- Onyx Docs, File Connector
- Onyx Docs, Create Connectors
- Onyx Docs, Ollama
- Onyx Docs, LiteLLM Proxy
- Onyx Docs, Custom Inference Provider
- Onyx Docs, Index Settings
- Onyx Docs, OpenSearch Document Index Migration
- Onyx Docs, Release Process & Updates
- Onyx, docker-compose.yml
- Onyx, shared_configs/configs.py
- Onyx, embedding_configs.py
- Open WebUI Docs, Knowledge
- Open WebUI Docs, Knowledge Base Sync (oikb)
- Open WebUI Docs, Groups
- Open WebUI Docs, License
Run Onyx on your own network
We review data sources, permissions, models and hardware and set up Onyx on your infrastructure or on a managed GPU server operated by WZ-IT.
Frequently Asked Questions
Answers to important questions about this topic
Onyx is an open source platform for enterprise search, AI chat and agents based on RAG. It connects to applications such as Confluence, SharePoint, Jira or Google Drive through connectors, indexes their content including metadata and answers questions with source citations. Onyx can be self-hosted with Docker Compose, Kubernetes or Helm.
Yes. Onyx is the new name of the Danswer project. The license file still names DanswerAI, Inc. as copyright holder, and internal index names in the source code still start with danswer_chunk. The GitHub repository is onyx-dot-app/onyx.
No. Code outside the ee directories is MIT licensed (Community Edition). Everything inside the ee directories, such as backend/ee and web/src/ee, is covered by the Onyx Enterprise License and requires a license to use. The MIT label on the repository therefore applies only to the Community Edition.
No. Automatically inheriting source permissions (Auto Sync Permissions) is an Enterprise Edition feature, available from the Business plan upwards. In the Community Edition a connector is either private or public. A public connector that reads private content makes it visible to every Onyx user.
Onyx Standard needs at least 4 vCPU, 10 GB RAM and 32 GB of storage plus roughly 2.5 times the indexed data; 8 vCPU and 16 GB RAM or more are recommended. Onyx Lite runs on 2 vCPU and 2 GB RAM but does not index documents. A local language model adds its own requirements (as of September 2026).
Onyx itself runs without a GPU. For self-hosted embedding models, the documentation strongly recommends giving the indexing model server a GPU. Anyone who also runs a local language model via Ollama or vLLM needs a GPU with enough VRAM for it.
Not through a dedicated connector. The list of official connectors contains neither Nextcloud nor WebDAV (as of September 2026). Options are the web connector for shared pages, the file connector for uploaded files or a custom connector built on the Onyx API. None of these carries over Nextcloud permissions.
Onyx Lite is a lightweight chat interface with agents, file uploads and projects, but without a vector index and without background workers. Connectors cannot be indexed with it. Onyx Standard adds the vector and keyword index, the workers for syncing, the model servers as well as Redis and MinIO.
Onyx fits when many company sources need to be synced and searched continuously, ideally with inherited permissions. Open WebUI fits when chatting with local models is the focus and knowledge enters knowledge bases via uploads, folder sync or the companion tool oikb. Both connect to Ollama and OpenAI-compatible endpoints.
No. Onyx has moved from Vespa to OpenSearch as its document index. The Docker Compose file of version 4.8.0 contains OpenSearch 3.6.0 and no Vespa service. Anyone coming from a version before 3 has to upgrade to version 3 first so the migration of indexed documents can run; otherwise a full re-index is required.

Written by
Timo Wevelsiep
Co-Founder & CEO
Co-Founder of WZ-IT. Specialized in cloud infrastructure, open-source platforms and managed services for SMEs and enterprise clients worldwide.
LinkedInLet's Talk About Your Idea
Whether a specific IT challenge or just an idea - we look forward to the exchange. In a brief conversation, we'll evaluate together if and how your project fits with WZ-IT.





