Thank you for your interest in contributing to OpenAdapt!
Participation in this project is governed by the Code of Conduct.
OpenAdaptAI/OpenAdapt is the launcher/meta-package and compatibility
surface. The canonical compiler and governed runtime live in
openadapt-flow. New engine,
replay, repair, policy, and backend work belongs there.
The signed Production record provides the current admission state. Do not infer a lifecycle state from package availability, repository text, or a sibling repository.
- This repository: launcher packaging, unified CLI compatibility, and CI.
openadapt-flow: compiler, replay, verification, governed repair, and backend implementation.openadapt-agent: agent-facing MCP and Agent Skills integration over governed Flow bundles.- Other repositories: open issues only when their stated lifecycle and contribution guide match the proposed work.
-
Fork and clone the repository.
-
Create a focused branch from current
origin/main. -
Install the launcher in development mode:
python -m pip install -e '.[dev]' -
Run the focused test suite and formatting checks:
pytest ruff check openadapt tests
-
Open a pull request. The pull-request template lists the required release and source-boundary checks.
- Follow the existing code style.
- Test durable behavior and package contracts rather than ordinary copy.
- Keep changes focused and update the canonical documentation when behavior changes.
- Never place customer-derived data, deployment recipes, or secrets in a public fixture or package artifact.
OpenAdapt is open-core. The public repositories (this launcher,
openadapt-flow, openadapt-capture, openadapt-desktop, and the other
openadapt-* engine repos) are MIT licensed: the mechanism and the public
interfaces are open. The hosted control plane (OpenAdapt Cloud) is a
proprietary commercial service, and certain data and empirical tuning stay
private by policy.
What this means for contributions to the public repos:
- Do not contribute application-specific recipes, customer fixtures, or
proprietary system identifiers derived from real deployments (for example,
automation content tied to a specific customer's EHR configuration). CI
runs
scripts/check_source_boundary.pyto reject that class of content. That script keeps no denylist of its own: it readssource-policy.public.json, a generated file rendered from OpenAdapt's canonical source-availability manifest. Do not edit the generated file by hand; a rule changes at its source, and the guard fails closed if the file is missing or incomplete. - Do not contribute deployment-derived corpora, tuned adversary parameters, thresholds, oracle or connector recipes, or datasets tied to real systems of record. Synthetic, reproducible fixtures are welcome.
- Do not copy or vendor GPL/AGPL/SSPL or otherwise non-MIT-compatible material into these repositories or their built packages.
- The OpenAdapt name and logo are trademarks and are not covered by the MIT License; see TRADEMARKS.md.
By submitting a contribution you certify the
Developer Certificate of Origin (DCO) 1.1:
that you wrote the contribution or otherwise have the right to submit it
under the MIT License. Signing off your commits (git commit -s) is
appreciated but the certification applies to every contribution regardless.
A Contributor License Agreement is published:
openadapt-flow/CLA.md
for individuals, and
openadapt-flow/CCLA.md
for companies whose employees contribute on company time. It gives MLDSAI Inc.
an explicit copyright and patent license, which the MIT License alone doesn't
provide, and it keeps the option of relicensing the combined work later.
It is not enforced here yet. You don't agree to it by opening a pull request, and nothing is implied. You agree when you sign, either through the automated CLA check once that check is turned on for this repository, or by email. Until then the DCO and the MIT License are what govern your contribution.
The open-core boundary above is the reason this matters. Your contribution may end up in the proprietary products MLDSAI Inc. builds on this code. The MIT License already permits that. The CLA says it out loud so nobody is surprised.