Contributing To The Main Repo
Practical workflow for contributing code and documentation to OrcAI.
This page describes the expected contribution workflow for the main OrcAI repository.
Before You Start
- Use Bun
>=1.3.10. - Prefer the VS Code devcontainer workflow for consistent tooling.
- Create a branch from the latest main branch.
Typical Contribution Flow
- Sync main branch and create a feature/fix branch.
- Implement your changes.
- Run the relevant checks locally.
- Commit using Conventional Commit format.
- Open a pull request with clear scope and validation notes.
Branch Naming
Use short, descriptive branch names, for example:
feat/chat-branch-switcher-fixesfix/repository-playground-empty-statedocs/self-hosting-config-update
Commit Message Format
This repository enforces commit messages through commitlint (@commitlint/config-conventional).
Use Conventional Commits, for example:
feat(chat): add branch filter to chat listfix(workers): handle missing qdrant payload fielddocs(self-hosting): clarify spicedb security modes
Local Validation
Run the complete CI-equivalent validation:
bun run ciFor a faster check while iterating, run:
bun run lintAdditional useful checks:
bun run test
bun run --filter @orcai/web types:checkGit Hooks In This Repo
pre-commit: runslint-stagedformatting.commit-msg: runs commitlint validation.pre-push: runsbun run prepush.- GitHub Actions runs
bun run cifor pushes tomainand for pull requests.
Pull Request Expectations
Include the following in your PR description:
- What changed and why.
- Risk level and impacted areas (
apps/app,apps/workers,apps/web,packages/*). - Validation performed (commands run and outcomes).
- Screenshots for user-facing UI changes.
- Any TODOs or follow-up work.
Documentation Contributions
If your change modifies user flow, operations, or configuration behaviour:
- Update relevant docs in
apps/web/content/docs. - Keep wording consistent with British English in docs prose.
- Prefer explicit TODO markers over speculative behaviour.
Generated And Derived Files
Some files are generated by tooling (for example TanStack route trees). If your change affects generation inputs, ensure generated outputs are updated accordingly.
TODO
Add an explicit list of generated files and exact regeneration commands per app.
Security Reports
Do not open a public issue for a suspected vulnerability. Follow the private reporting process in the repository's SECURITY.md.
Contribution Licence
OrcAI is licensed under the GNU Affero General Public License, version 3 only (AGPL-3.0-only). By submitting a contribution, you agree to license it under the same terms and confirm that you have the right to do so. Do not submit code or assets whose licence is incompatible with the AGPL.