Onyx: The Open-Source AI Platform That Turns Company Data Into Agentic Context

A self-hosted stack for enterprise search, deep research, and tool-using assistants, built to move beyond simple RAG and into real context orchestration.

9 min read • View on GitHub • More from onyx-dot-app

A wide editorial scene of a user at a desk feeding a question into a large mechanical foundry that draws in documents, tickets, chat logs, code, and web sources, then emits a polished answer card and a small research notebook. It explains Onyx as a system that manufactures usable context instead of merely returning search results.
Onyx is best understood as a context engine, not a chat box. It pulls from many sources, then assembles a usable answer path.
Key Takeaways

From Chatbox to Context Engine

Onyx looks like a chat app until you follow the question. Then it starts to look like a machine for assembling context from the places companies actually keep knowledge: docs, tickets, wikis, code, and web sources. That shift matters because the hard part is not generating text. It is deciding what the model should know before it answers.

That is why Onyx feels closer to an enterprise context engine than a thin LLM wrapper. It is built to take a request, fan it out across multiple retrieval paths, enrich the result, and only then synthesize a response. The product is the orchestration layer.

Why Onyx Exists

The repo began life as Danswer, and the rebrand to Onyx lines up with a clearer product thesis: people were not just searching internal knowledge, they were trying to use AI as a work surface. The project README frames it as a self-hosted, enterprise AI platform, which tells you the target customer immediately: teams that care about sovereignty, permissions, and infrastructure they control.

That is the basic appeal. Consumer chat tools are convenient, but they do not solve enterprise access control, they do not naturally connect to internal systems, and they do not give a team much say over where data lives. Onyx packages those ugly parts into something deployable.

The Real Trick: Contextual RAG

The interesting jump in Onyx is from simple retrieval to contextual retrieval. Instead of asking a vector search to do everything, the system combines query expansion, hybrid keyword and vector search, reranking, metadata, permissions, and sometimes graph-aware context. That makes the answer path feel assembled, not guessed.

This is where the architecture starts to matter. The pipeline can fetch candidate documents, rerank them, enrich them with surrounding context, and decide whether it needs a second pass through tools like web search, code execution, or MCP connections. The result is closer to a research assistant than a search box.

A question does not go straight to an answer. Onyx builds a context package step by step, and only then generates a response.

A close-up mechanical assembly line where a single query enters from the left, splits through keyword search and vector search, passes through a reranking gate, then gains added layers of snippets, metadata, permissions, and graph links before reaching a tool checkpoint. It explains how Onyx builds context in stages instead of relying on one retrieval step.
Onyx’s retrieval flow is layered. Each stage adds signal, trims noise, or decides whether more tools are needed before an answer is allowed out.

How the System Stays Framework-Agnostic

One of the cleaner signals in the backend is the error boundary. Business logic raises OnyxError, and the web layer translates that into API responses. That is a small detail with a large payoff: the engine stays independent of FastAPI quirks, which keeps the core reusable and easier to evolve.

try:
    result = run_context_pipeline(query)
except OnyxError as e:
    return error_response(e.to_dict())

return success_response(result)

That pattern is exactly what you want in a platform that expects the UI, retrieval stack, and deployment surface to change over time. The framework can be swapped or upgraded without dragging product logic along with it.

One Codebase, Two Products

The app/ee/ override pattern is a business model hiding in plain sight. Community and Enterprise share routes, but EE can replace pieces through filesystem convention. That means the codebase can stay unified while the product can still differentiate where it needs to.

AxisCommunity EditionEnterprise Edition
RoutesSharedShared
OverridesBase implementationFilesystem-based swaps in app/ee/
DeploymentSelf-hostableSelf-hostable with enterprise controls
Product shapeOpen core platformPaying customer features on the same stack
Strategic valueBroad adoptionMonetization without a fork

That is a pragmatic fair-core approach. It preserves the shared engineering surface area while still leaving room for commercial features, which is much easier to maintain than two separate products pretending to be one.

Deep Research, Sandbox Runs, and MCP

Onyx is also trying to move beyond retrieval into active work. The deep research flow, code execution sandbox, and MCP support give it a path from answer generation to task completion. That is the real frontier here: not just finding the right document, but using the document to do something useful.

This is where the platform starts to overlap with agent frameworks, but without becoming one. Onyx still cares about enterprise search, permissions, and indexing, yet it exposes enough tool surface to let an assistant browse, verify, compute, and connect to external systems.

CategoryWhat it isWhat Onyx adds
Generic chat UIA place to talk to a modelEnterprise data, permissions, and retrieval
Traditional enterprise searchA way to find documentsLLM synthesis and tool use
Thin RAG wrapperSearch plus prompt stuffingHybrid retrieval, reranking, enrichment, and workflows
Agent frameworkTool orchestration logicA full product surface with search, chat, and deployment

How It Compares

Onyx sits in an awkward but interesting middle zone. It is not just a UI like a chat-first wrapper. It is not just an indexer like classic enterprise search. And it is not just an agent SDK that leaves the product layer to someone else.

That middle position is the point. If you want an open-source stack that can connect to company systems, respect deployment constraints, and still do more than retrieve paragraphs, Onyx is aiming at that gap.

Project typeSelf-hostableTool useEnterprise permissionsMain identity
Generic chat UISometimesLimitedUsually weakInterface
Traditional enterprise searchYesNoStrongIndexer
Thin RAG wrapperYesRareMixedPrompt layer
Agent frameworkYesYesDepends on integratorOrchestrator
OnyxYesYesStrongContext engine + UI

What the Repo Reveals About the Team

The repository itself suggests a team building for durability. A busy migration history points to a schema that is still evolving. The frontend, backend, deployment tooling, and enterprise override structure all point to a product that expects real customers, real upgrades, and real operational constraints.

That matters because many open-source AI projects stop at a good demo. Onyx reads like the opposite: a stack shaped by the friction of production use, then organized into a product that can survive it.