Onyx Licensing Details: MIT Community Edition vs. Enterprise License
Onyx is dual-licensed under the MIT Expat License for the Community Edition and the proprietary Onyx Enterprise License for EE components, with clear separation at the ee/ directory boundaries.
The onyx-dot-app/onyx repository employs a dual-licensing strategy that distinguishes between open-source Community Edition code and commercial Enterprise Edition features. Understanding the licensing details for Onyx is critical for developers integrating the platform into proprietary applications or contributing to the codebase. The licensing structure is explicitly defined in the top-level LICENSE file and mirrored across Enterprise Edition subdirectories.
MIT License: The Community Edition
All files residing outside of any ee/ directory fall under the permissive MIT Expat License. According to the source code in onyx-dot-app/onyx, the root LICENSE file defines these terms in lines 10-28, granting users the freedom to use, modify, and redistribute the Community Edition provided the original copyright notice is preserved.
The repository README reinforces this licensing model through visual and textual cues. An MIT badge appears near line 20 (), and line 96 explicitly states: "Onyx Community Edition (CE) is available freely under the MIT license." This applies to core functionality located in standard directories such as backend/onyx/ and web/src/app/ outside of any ee/ subfolders.
Onyx Enterprise License: Commercial Components
Any code located within ee/ directories—including backend/ee/, web/src/app/ee/, and web/src/ee/—is governed by the proprietary Onyx Enterprise License. The root LICENSE file explains this restriction in lines 3-9, noting that third-party components retain their original licenses while Enterprise components require compliance with DanswerAI, Inc.'s commercial terms.
To ensure clarity, each Enterprise directory contains an identical copy of the Enterprise License. For example, backend/ee/LICENSE, web/src/app/ee/LICENSE, and web/src/ee/LICENSE all replicate the commercial terms, making the licensing boundaries unambiguous for commercial users evaluating Enterprise features such as advanced connectors or administrative tooling.
Programmatically Identifying License Boundaries
Developers can automate license compliance checks by detecting the ee/ path segment. The following Node.js utility distinguishes between MIT-licensed Community Edition files and Enterprise-licensed components:
import fs from 'fs';
import path from 'path';
function isMITLicensed(filePath) {
// Any path that does NOT contain "/ee/" is MIT-licensed
return !filePath.includes(`${path.sep}ee${path.sep}`);
}
// Usage examples
console.log(isMITLicensed('backend/onyx/auth/auth.py')); // true (MIT)
console.log(isMITLicensed('backend/ee/license_manager.py')); // false (Enterprise)
This approach leverages the directory structure defined in the repository to programmatically enforce licensing boundaries during CI/CD pipelines or dependency scanning.
Automating License Badge Maintenance
The repository includes an MIT badge in the README to signal the open-source nature of the Community Edition. Teams can automate badge updates using GitHub Actions, ensuring the shield remains synchronized with the root LICENSE file:
name: Update README badge
on:
push:
branches: [main]
jobs:
badge:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Insert MIT badge
run: |
sed -i '2i[](https://github.com/onyx-dot-app/onyx/blob/main/LICENSE)' README.md
- name: Commit changes
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: "Refresh MIT badge"
This workflow inserts the MIT badge at line 2 of the README, maintaining consistency with the licensing details specified in the repository documentation.
Key Licensing Files
The following files define the legal boundaries between Community and Enterprise editions:
LICENSE(root): Defines MIT terms for core code (lines 10-28) and explains Enterprise restrictions (lines 3-9)backend/ee/LICENSE: Enterprise License copy for backend EE componentsweb/src/app/ee/LICENSE: Enterprise License copy for web application EE componentsweb/src/ee/LICENSE: Enterprise License copy for standalone web EE componentsREADME.md: High-level licensing description with MIT badge and explicit CE licensing statement (line 96)
Summary
- Onyx uses dual-licensing: MIT Expat for Community Edition, proprietary Onyx Enterprise License for EE components
- Directory-based separation: All
ee/directories contain Enterprise code; everything else is MIT-licensed - Root LICENSE clarity: Lines 3-9 explain Enterprise restrictions; lines 10-28 define MIT terms
- Commercial requirements: Using Enterprise features requires compliance with DanswerAI, Inc.'s commercial agreement
- Programmatic detection: Checking for
/ee/in file paths reliably distinguishes license types
Frequently Asked Questions
Is Onyx fully open source?
No, Onyx is not fully open source. While the Community Edition is released under the permissive MIT Expat License, the Enterprise Edition components located in ee/ directories are protected under the proprietary Onyx Enterprise License, which imposes commercial usage restrictions.
Can I use Onyx Community Edition in commercial products?
Yes. The MIT License allows embedding Onyx Community Edition in proprietary software, provided you retain the original copyright notice and license text as specified in the root LICENSE file lines 10-28. This includes modification and redistribution without requiring source code disclosure.
What features require the Onyx Enterprise License?
Features located within any ee/ directory—such as advanced connectors, enterprise-grade admin tooling, and enhanced security modules—require compliance with the Onyx Enterprise License. These components are clearly marked with separate LICENSE files in directories like backend/ee/ and web/src/app/ee/.
How do I contribute to Onyx without violating the Enterprise License?
Contributions to non-EE directories automatically fall under the MIT License terms. When submitting pull requests, ensure your changes target files outside the ee/ directories unless you have explicit authorization from DanswerAI, Inc. to modify Enterprise components under their commercial terms.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →