multi-connector document indexing with unified schema
Onyx implements a pluggable connector framework that abstracts 20+ data sources (Slack, Google Drive, Confluence, GitHub, etc.) into a unified document ingestion pipeline. Each connector implements a standardized lifecycle (credential validation, document fetching, chunking, metadata extraction) and feeds into a Celery-based background task queue that coordinates with Vespa for full-text and semantic indexing. The system maintains connector state, handles incremental syncs, and manages credential encryption via a centralized credential store.
Unique: Implements a standardized connector lifecycle pattern with Celery-based async coordination and Vespa dual-indexing (full-text + semantic), enabling incremental syncs and credential management without re-indexing entire corpora. Uses Redis for distributed task coordination and maintains connector state in PostgreSQL for resumable operations.
vs alternatives: More flexible than Langchain's document loaders because connectors are first-class entities with state management, retry logic, and incremental sync support; more enterprise-ready than simple vector DB connectors because it handles credential rotation and multi-tenant isolation.
retrieval-augmented generation with citation tracking
Onyx implements a RAG pipeline that retrieves relevant documents from Vespa using hybrid search (BM25 + semantic similarity), ranks results using LLM-based relevance scoring, and injects retrieved context into the LLM prompt with explicit citation metadata. The system tracks which documents contributed to each response, enables users to click through to source documents, and supports configurable retrieval strategies (dense-only, sparse-only, or hybrid). Retrieved chunks maintain document ID, source connector, and chunk position for precise citation.
Unique: Combines Vespa's hybrid search (BM25 + semantic) with LLM-based re-ranking and maintains explicit citation metadata (document ID, chunk position, source connector) throughout the pipeline, enabling precise source attribution and click-through verification. Supports configurable retrieval strategies per-assistant without re-indexing.
vs alternatives: More transparent than black-box RAG systems because citations are first-class data with full provenance; more flexible than simple vector search because hybrid scoring reduces hallucination from semantic-only retrieval and supports multiple ranking strategies.
chat frontend with real-time message streaming and ui state management
Onyx provides a Next.js-based chat UI that streams LLM responses in real-time using Server-Sent Events (SSE), displaying tokens as they arrive. The frontend maintains local state for conversations, messages, and UI elements (input field, citation popups, research progress) using React hooks and TypeScript. The UI supports markdown rendering, code syntax highlighting, citation links, and responsive design. Real-time updates are coordinated via WebSocket or polling, and the frontend implements optimistic updates for better perceived latency.
Unique: Implements real-time response streaming via Server-Sent Events with optimistic UI updates and citation rendering. Uses React hooks for state management and supports markdown/code rendering with syntax highlighting, enabling responsive chat UX with minimal latency perception.
vs alternatives: More responsive than polling-based chat because SSE streaming delivers tokens immediately; more feature-rich than basic chat UIs because it supports citations, markdown, and code highlighting.
mcp server integration for external tool execution
Onyx implements a Model Context Protocol (MCP) server that exposes Onyx capabilities (search, retrieval, assistant management) to external LLM clients. External applications can call Onyx tools via MCP, enabling workflows where an external LLM orchestrates Onyx operations. The MCP server is implemented as a separate service that communicates with the main Onyx API, and supports standard MCP tool schemas for function calling. This enables integration with other AI systems and agents that support MCP.
Unique: Implements a Model Context Protocol server that exposes Onyx capabilities (search, retrieval, chat) to external LLM clients, enabling multi-agent workflows where Onyx is orchestrated by external agents. Supports standard MCP tool schemas for function calling.
vs alternatives: More interoperable than proprietary APIs because MCP is a standard protocol; more flexible than single-agent systems because external agents can orchestrate Onyx operations.
embeddable chat widget for third-party websites
Onyx provides an embeddable chat widget that can be deployed on third-party websites via a simple script tag. The widget communicates with the Onyx backend via CORS-enabled API calls and maintains conversation state in the browser. The widget is customizable (colors, position, initial message) via configuration parameters, and supports authentication via JWT tokens or API keys. The widget is built with vanilla JavaScript (no framework dependencies) to minimize bundle size and compatibility issues.
Unique: Provides a lightweight embeddable chat widget built with vanilla JavaScript (no framework dependencies) that communicates with Onyx backend via CORS-enabled APIs. Supports customization via configuration parameters and authentication via JWT or API keys.
vs alternatives: Lighter than framework-based widgets because it uses vanilla JavaScript; more flexible than iframe-based embedding because it communicates directly with the Onyx API.
desktop application with local-first architecture
Onyx provides a desktop application (built with Electron or similar) that can run locally or connect to a remote Onyx instance. The desktop app maintains local conversation history and can work offline with cached documents. It supports keyboard shortcuts, system tray integration, and native file dialogs for document upload. The app is built with the same frontend code as the web UI, enabling code reuse and consistent UX across platforms.
Unique: Provides a native desktop application with local-first architecture supporting offline conversations and cached documents. Reuses frontend code from web UI while adding native integrations (clipboard, file dialogs, system tray).
vs alternatives: More responsive than web app because it runs natively; more capable than web app because it supports system integration and offline mode.
cli tool for programmatic access and automation
Onyx provides a command-line interface (onyx-cli) for programmatic access to Onyx capabilities: searching documents, creating conversations, managing assistants, and uploading documents. The CLI is built with Python and uses the Onyx API, enabling automation workflows and integration with shell scripts. The CLI supports output formatting (JSON, CSV, table) for easy parsing, and authentication via API keys or environment variables.
Unique: Provides a Python-based CLI that exposes Onyx capabilities for automation and scripting. Supports multiple output formats (JSON, CSV, table) and integrates with shell scripts and CI/CD pipelines via API key authentication.
vs alternatives: More scriptable than web UI because it supports programmatic access; more flexible than REST API because it provides high-level commands for common operations.
chrome extension for in-browser document search and chat
Onyx provides a Chrome extension that enables searching Onyx documents and chatting with Onyx directly from the browser. The extension adds a sidebar to the browser that communicates with the Onyx backend, allowing users to search without leaving their current page. The extension supports authentication via OAuth or API keys, and maintains conversation state across browser sessions. The extension can be configured to search specific assistants or document collections.
Unique: Provides a Chrome extension that integrates Onyx search and chat into the browser sidebar, enabling quick access to documents without leaving the current page. Supports OAuth and API key authentication with conversation persistence across sessions.
vs alternatives: More convenient than opening Onyx in a separate tab because it maintains context in the sidebar; more integrated than web UI because it works alongside other browser applications.
+8 more capabilities