Contributing
Help build Orch8
Orch8 is source-available under BUSL-1.1 (converts to Apache 2.0 after 4 years). Contributions are welcome — from bug reports to new block types.
Ways to contribute
Request features
Have an idea? Open a feature request. Describe the use case, not just the feature.
Request a feature →Submit a PR
Pick an issue, fork the repo, make your changes, and open a pull request. Start with issues labeled 'good first issue'.
Find good first issues →Improve docs
Docs live in the engine repo under docs/. Fix a typo, clarify an explanation, or add an example.
View docs source →Write a blog post or tutorial
Built something with Orch8? Share it. We'll link to community content from the docs.
Let us know →Build an SDK or integration
The REST API is fully documented. Build an SDK in your language or integrate with your favorite tools.
API reference →Good first issues
New to Orch8? These issues are scoped, well-described, and have pointers to the relevant code. They're a great way to get familiar with the codebase.
View good first issues on GitHubDevelopment setup
Orch8 is a Rust workspace with 5 crates. You need Rust 1.75+, Docker (for Postgres in tests), and Node.js 18+ (for E2E tests).
Clone and build
git clone https://github.com/orch8-io/engine.git
cd engine
cargo build --workspaceRun tests
# Start Postgres for tests
docker compose up -d
# Unit tests
cargo test --workspace
# Linting
cargo clippy --workspace -- -D warnings
# E2E tests
cd tests/e2e && npm install && npm testRun the server locally
# With SQLite (no external deps)
cargo run -- --insecure
# With Postgres
docker compose up -d
cargo runServer runs on port 8080 (HTTP) and 50051 (gRPC) by default. Postgres runs on port 5434 (mapped from container 5432).
Crate structure
orch8-server Binary entry point
|
orch8-api REST routes (axum) + gRPC services (tonic)
|
orch8-engine Scheduler, evaluator, handlers, signals, recovery
|
orch8-storage StorageBackend trait + Postgres + SQLite
|
orch8-types Domain types, config, errorsMost contributions will touch orch8-engine (new handlers, block types, evaluator logic) or orch8-api (new endpoints). Storage changes require updating both Postgres and SQLite implementations.
Guidelines
- ✓Open an issue before starting large PRs — let's align on scope first
- ✓Keep PRs focused — one feature or fix per PR
- ✓Add tests for new functionality (unit tests in Rust, E2E tests in JS for API changes)
- ✓Run cargo clippy and cargo fmt before submitting
- ✓Update docs if your change affects the public API
- ✓Be respectful in discussions — technical disagreements are welcome, personal attacks are not
License note
By contributing to Orch8, you agree that your contributions will be licensed under the same BUSL-1.1 license. After 4 years, all code (including your contributions) converts to Apache 2.0.