- scripts/strip-commercial.sh: removes agor-pro/, commercial files, SPDX headers - leak-check.yml: added LICENSE-COMMERCIAL, SPDX header, and feature flag checks - CONTRIBUTING.md: external contributor guide, commercial content table, sync docs
5.2 KiB
Contributing to Agent Orchestrator
Dual-Repository Model
This project uses a dual-repo structure:
| Repository | License | Purpose |
|---|---|---|
DexterFromLab/agent-orchestrator |
MIT | Community edition (open source) |
agents-orchestrator/agents-orchestrator |
MIT + Commercial | Commercial edition (this repo) |
Community contributions target the community repo. Commercial development happens
exclusively in this repo. The two share a common main branch that is synced
periodically.
Community Contributions
All community contributions go to DexterFromLab/agent-orchestrator. Do not open PRs against this repo for community features.
How to Contribute
- Fork the community repo at
DexterFromLab/agent-orchestrator - Create a feature branch from
main - Make your changes and commit using conventional commits
- Open a pull request against
DexterFromLab/agent-orchestratormain - Sign the CLA when prompted by the bot on your first PR
- Address review feedback
- Once approved, a maintainer will merge your PR
Do not fork or open PRs against agents-orchestrator/agents-orchestrator for
community contributions. That repository contains commercial code and access is
restricted.
Contributor License Agreement (CLA)
Every community contributor must sign the CLA before their first PR is merged. CLA signing is automated via CLA-assistant.io on the community repository. The bot will prompt you on your first PR.
The CLA grants the project maintainers a perpetual, irrevocable license to use your contribution in both the community and commercial editions. You retain full ownership of your code. See CLA.md for the full agreement text.
Commercial Development
Commercial features are developed only in this repository. Access is restricted to authorized team members.
What Content Is Commercial-Only
The following paths and markers identify commercial-only content:
| Marker | Description |
|---|---|
agor-pro/ |
Commercial feature modules |
src/lib/commercial/ |
Commercial frontend components |
tests/commercial/ |
Commercial test suites |
LICENSE-COMMERCIAL |
Commercial license file |
LicenseRef-Commercial SPDX header |
Any file with this header |
test:all:commercial script |
Commercial test runner |
This content is automatically stripped during community sync and never appears in the community repository.
SPDX License Headers
All commercial source files must include the following header as the first line:
// SPDX-License-Identifier: LicenseRef-Commercial
For CSS/HTML files:
/* SPDX-License-Identifier: LicenseRef-Commercial */
For Rust files:
// SPDX-License-Identifier: LicenseRef-Commercial
Community-shared code uses the MIT identifier:
// SPDX-License-Identifier: MIT
Community Sync Workflow
The community repo is kept in sync with this repo via an automated workflow:
- Trigger: Manual dispatch or on release tag publication
- Strip:
scripts/strip-commercial.shremoves all commercial content - Verify: Automated checks ensure no commercial references remain
- Push: A sync branch is pushed to
DexterFromLab/agent-orchestrator - Merge: A maintainer reviews and merges the sync PR
To preview what would be stripped locally:
# Dry run — shows what files would be removed (modifies working tree)
bash scripts/strip-commercial.sh
# Reset after preview
git checkout .
The leak-check CI workflow runs on every push and PR to main, verifying that no
commercial content has been accidentally committed to community-bound code.
Branch Model
| Branch | Purpose |
|---|---|
main |
Shared with community edition. Never commit commercial code here. |
commercial/* |
Commercial-only features. Merged into the commercial release branch. |
feature/*, fix/* |
Standard development branches. |
Sync Flow
The community repo's main is merged into this repo's main periodically:
community/main --> origin/main --> commercial branches
Use make sync to pull community changes. Never force-push main.
Commit Conventions
Use Conventional Commits:
type(scope): description
feat(dashboard): add team analytics panel
fix(sidecar): handle timeout on agent restart
docs(api): update webhook payload reference
chore(deps): bump tauri to 2.3.1
Types: feat, fix, docs, style, refactor, perf, test, chore, ci, build.
Breaking changes use type!: prefix or include BREAKING CHANGE: in the footer.
Testing
Both editions must pass their respective test suites before merge:
# Community tests (must always pass on main)
npm run test:all
# Commercial tests (includes commercial-specific tests)
npm run test:all:commercial
Do not merge a PR if either suite is red. If a community sync introduces failures in commercial tests, fix them before merging.
Code Review
- All PRs require at least one approval.
- Commercial PRs must be reviewed by a team member with commercial repo access.
- Verify no commercial code leaks into community-bound branches before approving.