The Onyx application is a set of Docker Containers which can be deployed on any infra and for any scale.
As an open source project,
Onyx is designed with security and data privacy as a foundational principle so that teams can trust the software even
without needing partnership guarantees.
Inference Model Server: Serves the embedding and reranking models used at query time to
retrieve and order context
Indexing Model Server: A dedicated model server that handles embedding of documents during
indexing, isolating heavy indexing workloads from live query traffic
Some components of the Onyx stack are easily replaceable while others are not.The object store can be replaced with S3, Google Cloud Storage, Azure Blob Storage,
or any S3-compatible object storage service. The file store interface is abstracted to make this straightforward.Redis can be replaced with a managed Redis service like AWS ElastiCache or Google Cloud Memorystore for Redis.
Other in-memory caches could work but would require code changes.Postgres can be replaced with a managed Postgres service such as AWS RDS.
It is much more challenging and not advised to switch to a different relational DB due to language specific features and
optimizations.OpenSearch can be replaced with a multi-node OpenSearch cluster (typically not necessary)
or a managed OpenSearch service such as AWS OpenSearch Service.
OpenSearch is tightly integrated with the context retrieval functionalities and switching to a different search engine
would require significant development effort to maintain the same functionality.Nginx can be removed and replaced with your own routing proxy.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Onyx Documentation","colors":{"primary":"#0069ED","light":"#4D9CFF","dark":"#0050B4"},"logo":{"light":"https://mintcdn.com/danswer/1bxGRwgOacJPGlC5/assets/logo/onyx_logo.svg?fit=max\u0026auto=format\u0026n=1bxGRwgOacJPGlC5\u0026q=85\u0026s=9e1b5ded94d4ce6bd0f6d335aeb80979","dark":"https://mintcdn.com/danswer/1bxGRwgOacJPGlC5/assets/logo/onyx_logo_inverted.svg?fit=max\u0026auto=format\u0026n=1bxGRwgOacJPGlC5\u0026q=85\u0026s=9cddb5f01462839d08ffc43a57a40f11","href":"https://onyx.app/"},"favicon":"https://mintcdn.com/danswer/1bxGRwgOacJPGlC5/assets/logo/onyx_favicon.svg?fit=max\u0026auto=format\u0026n=1bxGRwgOacJPGlC5\u0026q=85\u0026s=a0015c7e185e6402386c562f3c24acda","api":{"openapi":["developers/api_reference/openapi.json"]},"navbar":{"links":[{"icon":"github","href":"https://github.com/onyx-dot-app/onyx","label":"onyx-dot-app/onyx"}],"primary":{"type":"button","label":"Onyx Cloud","href":"https://cloud.onyx.app/?utm_source=docs"}},"footer":{"socials":{"github":"https://github.com/onyx-dot-app/onyx","twitter":"https://x.com/onyx_dot_app","linkedin":"https://linkedin.com/company/onyx-dot-app"}},"seo":{"metatags":{"keywords":"enterprise search, onyx ai, onyx, open source ai, enterprise ai, generative ai platform, ai assistant, knowledge management, danswer"}},"integrations":{"posthog":{"apiKey":"phc_ghlrcfXpgWq9XxZeVMfoJpfaISgFGoXhHYOEcBwdulK","apiHost":"https://us.i.posthog.com"}},"banner":{"content":"**Permissions update:** Onyx now uses group-based permissions. [Understand permissions](/admins/permissions/understanding_permissions) or [review migration details](/admins/permissions/whats_changing)","dismissible":true},"contextual":{"options":[],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://onyx.app/"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/TDJ59cGV2X"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"danswer","hasAudioNarration":false,"actualSubdomain":"danswer","customDomains":["docs.onyx.app"],"gitSource":{"type":"github","owner":"onyx-dot-app","repo":"documentation","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adc477075476ff3698d45cd","collectionId":"70d1eb3b-58bc-4c64-b05b-350f275ff267","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adc477075476ff3698d45cd"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6adc477075476ff3698d45cd","clientVersion":"0.0.3969","searchFilterCounts":[{"language":"default","tag":"Admins","count":126},{"language":"default","tag":"Developers","count":116},{"language":"default","tag":"API Reference","count":108},{"language":"default","tag":"Connectors","count":93},{"language":"default","tag":"Supported Connectors","count":70},{"language":"default","tag":"Deployment","count":36},{"language":"default","tag":"Connectors \u0026 Credentials","count":36},{"language":"default","tag":"Overview","count":28},{"language":"default","tag":"Managing Features","count":18},{"language":"default","tag":"Projects \u0026 Files","count":16}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".rounded-image{border-radius:1rem;margin:8px auto;display:block}.prose table,table{display:table;width:100%;max-width:100%;table-layout:auto}.prose table th{text-align:left!important}.icon-dark-invert [data-component-part=card-icon] img{background:0 0!important}.dark .icon-dark-invert [data-component-part=card-icon] img{filter:invert(1)!important}.docs-image-placeholder{align-items:center;background:repeating-linear-gradient(45deg,rgba(0,105,237,.08),rgba(0,105,237,.08) 12px,rgba(0,105,237,.14) 12px,rgba(0,105,237,.14) 24px);border:1px dashed rgba(0,105,237,.55);border-radius:.75rem;color:#0050b4;display:flex;font-weight:600;justify-content:center;margin:1rem 0;min-height:220px;padding:1.5rem;text-align:center}.dark .docs-image-placeholder{color:#9ec8ff}.permission-pyramid{display:flex;flex-direction:column;gap:.5rem;margin:1.5rem auto;max-width:760px}.permission-pyramid-layer{align-items:center;border:1px solid rgba(0,105,237,.18);border-radius:.75rem;display:flex;flex-direction:column;gap:.2rem;margin:0 auto;padding:.85rem 1rem;text-align:center}.permission-pyramid-layer span{font-size:.9rem}.permission-pyramid-admin{background:#0b1f3a;color:#fff;width:100%}.permission-pyramid-org{background:#0050b4;color:#fff;width:82%}.permission-pyramid-scoped{background:#4d9cff;color:#07172b;width:62%}.permission-pyramid-basic{background:#eaf4ff;color:#07172b;width:42%}.permission-pyramid-limited{background:#f5f8fc;border-style:dashed;color:#37536f;width:26%}@media (max-width:640px){.permission-pyramid-admin,.permission-pyramid-basic,.permission-pyramid-limited,.permission-pyramid-org,.permission-pyramid-scoped{width:100%}}"}],"page":{"pagePath":"security/architecture/system_description","slug":"/security/architecture/system_description","pageMetadata":{"title":"System Description","description":"High level view of Onyx components","icon":"sitemap","href":"/security/architecture/system_description"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"High level view of Onyx components\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={li:`li`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,OptimizedImage,Tip}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsx(_components.p,{children:`The Onyx application is a set of Docker Containers which can be deployed on any infra and for any scale.`}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`As an open source project,\nOnyx is designed with security and data privacy as a foundational principle so that teams can trust the software even\nwithout needing partnership guarantees.`})}),`\n`,_jsx(Heading,{level:`2`,id:`system-architecture`,children:`System Architecture`}),`\n`,_jsx(OptimizedImage,{className:`rounded-image`,src:`https://mintcdn.com/danswer/gWaznKG_u_Kb_RJl/assets/security/OnyxArchitecture.png?fit=max\u0026auto=format\u0026n=gWaznKG_u_Kb_RJl\u0026q=85\u0026s=b795331ccba427e33d8712fc00df4904`,alt:`Onyx Architecture`,\"data-og-width\":`5614`,width:`5614`,\"data-og-height\":`2520`,height:`2520`,\"data-path\":`assets/security/OnyxArchitecture.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/danswer/gWaznKG_u_Kb_RJl/assets/security/OnyxArchitecture.png?w=280\u0026fit=max\u0026auto=format\u0026n=gWaznKG_u_Kb_RJl\u0026q=85\u0026s=934b52d85e0303500cc9ec2d5a6b4480 280w, https://mintcdn.com/danswer/gWaznKG_u_Kb_RJl/assets/security/OnyxArchitecture.png?w=560\u0026fit=max\u0026auto=format\u0026n=gWaznKG_u_Kb_RJl\u0026q=85\u0026s=c0df33d328ecccade1f33f2602a16419 560w, https://mintcdn.com/danswer/gWaznKG_u_Kb_RJl/assets/security/OnyxArchitecture.png?w=840\u0026fit=max\u0026auto=format\u0026n=gWaznKG_u_Kb_RJl\u0026q=85\u0026s=7d5a3c79c14a925dbaef1f7df9ccc8b9 840w, https://mintcdn.com/danswer/gWaznKG_u_Kb_RJl/assets/security/OnyxArchitecture.png?w=1100\u0026fit=max\u0026auto=format\u0026n=gWaznKG_u_Kb_RJl\u0026q=85\u0026s=c6ed9a3afab87565c068ede5852b30c9 1100w, https://mintcdn.com/danswer/gWaznKG_u_Kb_RJl/assets/security/OnyxArchitecture.png?w=1650\u0026fit=max\u0026auto=format\u0026n=gWaznKG_u_Kb_RJl\u0026q=85\u0026s=c2e6de9e72b036b36b5a2c5d537942df 1650w, https://mintcdn.com/danswer/gWaznKG_u_Kb_RJl/assets/security/OnyxArchitecture.png?w=2500\u0026fit=max\u0026auto=format\u0026n=gWaznKG_u_Kb_RJl\u0026q=85\u0026s=0a34986b9b9ba3103ec754c910f129db 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`core-components`,children:`Core Components`}),`\n`,_jsx(Heading,{level:`3`,id:`application-layer`,children:`Application Layer`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Frontend web client`}),`: Next.js-based web application providing the user interface for the Onyx\nplatform`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`API Server`}),`: Python FastAPI web server to handle business logic and requests`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Background Workers`}),`: Python workers to handle async jobs like fetching document updates, etc.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`model-servers`,children:`Model Servers`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Inference Model Server`}),`: Serves the embedding and reranking models used at query time to\nretrieve and order context`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Indexing Model Server`}),`: A dedicated model server that handles embedding of documents during\nindexing, isolating heavy indexing workloads from live query traffic`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`data-layer`,children:`Data Layer`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Relational Database`}),`: Postgres database to store application data, user sessions, and system\nstate`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Search Engine`}),`: OpenSearch providing keyword (BM25) search + vector store for retrieving\ncontext for queries`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`In Memory Cache`}),`: Redis, used to optimize performance`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`File Store`}),`: the object store (SeaweedFS) for user uploaded files and documents pulled from connectors`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`infrastructure-layer`,children:`Infrastructure Layer`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Request Router`}),`: Nginx reverse proxy for load balancing and request routing`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`component-replacements`,children:`Component Replacements`}),`\n`,_jsx(_components.p,{children:`Some components of the Onyx stack are easily replaceable while others are not.`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`object store`}),` can be replaced with S3, Google Cloud Storage, Azure Blob Storage,\nor any S3-compatible object storage service. The file store interface is abstracted to make this straightforward.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Redis`}),` can be replaced with a managed Redis service like AWS ElastiCache or Google Cloud Memorystore for Redis.\nOther in-memory caches could work but would require code changes.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Postgres`}),` can be replaced with a managed Postgres service such as AWS RDS.\nIt is much more challenging and not advised to switch to a different relational DB due to language specific features and\noptimizations.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`OpenSearch`}),` can be replaced with a multi-node OpenSearch cluster (typically not necessary)\nor a managed OpenSearch service such as AWS OpenSearch Service.\nOpenSearch is tightly integrated with the context retrieval functionalities and switching to a different search engine\nwould require significant development effort to maintain the same functionality.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Nginx`}),` can be removed and replaced with your own routing proxy.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"System Description","description":"High level view of Onyx components","icon":"sitemap","href":"/security/architecture/system_description"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"System Architecture","slug":"system-architecture","depth":2,"children":[]},{"title":"Core Components","slug":"core-components","depth":2,"children":[{"title":"Application Layer","slug":"application-layer","depth":3,"children":[]},{"title":"Model Servers","slug":"model-servers","depth":3,"children":[]},{"title":"Data Layer","slug":"data-layer","depth":3,"children":[]},{"title":"Infrastructure Layer","slug":"infrastructure-layer","depth":3,"children":[]}]},{"title":"Component Replacements","slug":"component-replacements","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"danswer","siteName":"Onyx Documentation","title":"System Description - Onyx Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-30T20:03:36.254Z","originalFileLocation":"security/architecture/system_description.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"High level view of Onyx components\">\u003cmeta data-mint-head name=\"keywords\" content=\"enterprise search, onyx ai, onyx, open source ai, enterprise ai, generative ai platform, ai assistant, knowledge management, danswer\">\u003cmeta data-mint-head name=\"application-name\" content=\"Onyx Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/danswer/2dK29RpbjoklEhso/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/danswer/2dK29RpbjoklEhso/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/danswer/2dK29RpbjoklEhso/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/danswer/2dK29RpbjoklEhso/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/danswer/2dK29RpbjoklEhso/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/danswer/2dK29RpbjoklEhso/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/danswer/2dK29RpbjoklEhso/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/danswer/2dK29RpbjoklEhso/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/danswer/2dK29RpbjoklEhso/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"System Description - Onyx Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"High level view of Onyx components\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Onyx Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.onyx.app/security/architecture/system_description\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://danswer.mintlify.app/_mintlify/api/og/v2?division=Architecture\u0026amp;title=System+Description\u0026amp;description=High+level+view+of+Onyx+components\u0026amp;theme=1411b426606efacb2c043d23\u0026amp;signature=1a3f0b45a03c3382b819d4b2d99550da3acd4d7bd3120afa4d9c4789f048c12f\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"System Description - Onyx Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"High level view of Onyx components\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://danswer.mintlify.app/_mintlify/api/og/v2?division=Architecture\u0026amp;title=System+Description\u0026amp;description=High+level+view+of+Onyx+components\u0026amp;theme=1411b426606efacb2c043d23\u0026amp;signature=1a3f0b45a03c3382b819d4b2d99550da3acd4d7bd3120afa4d9c4789f048c12f\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/danswer/2dK29RpbjoklEhso/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Onyx Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0069ED\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.onyx.app/security/architecture/system_description\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/security/architecture/system_description.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.onyx.app/#organization\",\"name\":\"Onyx Documentation\",\"url\":\"https://docs.onyx.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/danswer/1bxGRwgOacJPGlC5/assets/logo/onyx_logo.svg?fit=max\u0026auto=format\u0026n=1bxGRwgOacJPGlC5\u0026q=85\u0026s=9e1b5ded94d4ce6bd0f6d335aeb80979\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.onyx.app#website\",\"name\":\"Onyx Documentation\",\"url\":\"https://docs.onyx.app\",\"publisher\":{\"@id\":\"https://docs.onyx.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.onyx.app/security/architecture/system_description#webpage\",\"url\":\"https://docs.onyx.app/security/architecture/system_description\",\"name\":\"System Description\",\"description\":\"High level view of Onyx components\",\"dateModified\":\"2026-09-30T20:03:36.254Z\",\"isPartOf\":{\"@id\":\"https://docs.onyx.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.onyx.app/security/architecture/system_description#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.onyx.app/security/architecture/system_description#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Onyx Documentation\",\"item\":\"https://docs.onyx.app\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"System Description\",\"item\":\"https://docs.onyx.app/security/architecture/system_description\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.onyx.app/security/architecture/system_description#article\",\"headline\":\"System Description\",\"name\":\"System Description\",\"description\":\"High level view of Onyx components\",\"url\":\"https://docs.onyx.app/security/architecture/system_description\",\"mainEntityOfPage\":{\"@id\":\"https://docs.onyx.app/security/architecture/system_description#webpage\"},\"dateModified\":\"2026-09-30T20:03:36.254Z\",\"publisher\":{\"@id\":\"https://docs.onyx.app/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.onyx.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Onyx Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Onyx Documentation","nav":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://onyx.app/"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/TDJ59cGV2X"}]},"tabs":[{"tab":"Overview","icon":"house","pages":[{"title":"Overview","href":"/welcome"}]},{"tab":"Deployment","icon":"server","pages":[{"title":"Deployment","href":"/deployment/overview"}]},{"tab":"Admins","icon":"user-shield","pages":[{"title":"Admins","href":"/admins/overview"}]},{"tab":"Developers","icon":"square-terminal","pages":[{"title":"Developers","href":"/developers/overview"}]},{"tab":"Security","icon":"shield","pages":[{"group":"Architecture","pages":[{"title":"System Description","icon":"sitemap","href":"/security/architecture/system_description"},{"title":"Craft Architecture","description":"Understand Craft isolation, data flows, credentials, approvals, and sharing","icon":"hammer","href":"/security/architecture/craft"},{"title":"Data Flows","icon":"arrows-split-up-and-left","href":"/security/architecture/data_flows"},{"title":"Data Storage","icon":"hard-drive","href":"/security/architecture/data_storage"},{"title":"Access Controls","icon":"lock","href":"/security/architecture/access_controls"},{"title":"FAQ","icon":"comments-question","href":"/security/architecture/faq"}]},{"group":"Self-hosted","pages":[{"title":"Data Processing","icon":"microchip","href":"/security/self_hosted/data_processing"},{"title":"FAQ","icon":"comments-question","href":"/security/self_hosted/faq"}]},{"group":"Onyx Cloud","pages":[{"title":"Multi Tenant","icon":"user-group","href":"/security/onyx_cloud/multi_tenant"},{"title":"Single Tenant","icon":"user","href":"/security/onyx_cloud/single_tenant"},{"title":"Compliance","icon":"shield-check","href":"/security/onyx_cloud/compliance"}]},{"group":"Miscellaneous","pages":[{"title":"Contact Us","icon":"comments","href":"/security/contact_us"}]}]},{"tab":"Changelog","icon":"clock-rotate-left","pages":[{"title":"Changelog","href":"/changelog"}]},{"tab":"Agent Wiki","icon":"book","hidden":true,"pages":[{"title":"Agent Wiki","href":"/agent-wiki/welcome"}]}]},"title":"System Description - Onyx Documentation","buildId":"dpl_G8u2B2Ji9qJYF9umedjv293TxycS","deploymentId":"dpl_G8u2B2Ji9qJYF9umedjv293TxycS","dynamics":["10e4515597","a74be98ba7"],"chunks":["BannerMarkdown-DIVqt_Ol.js","dist-CPNs0ebX.js","lib--scc4DXi.js","lib-B8HbPgcC.js","clsx-Dfme4k4V.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","zoom-image-lightbox-Io6GMTYV.js","lightbox-handle-r17bVUz3.js"]}