Thanks for your interest in contributing. This is a small early-stage project, so we keep the process light.
You'll need:
- Rust ≥ 1.95 — install via rustup. The repo pins
the stable toolchain via
rust-toolchain.toml, sorustupwill fetch the matching components automatically on first build. - Temporal CLI — for running the examples against a local dev server.
Install with
brew install temporalor follow https://docs.temporal.io/cli#install. - Docker — required only for running the integration test suite,
which spins up Temporal and Ollama containers via
testcontainers. - An OpenAI-compatible API key (only for running the
simple_math_agent/interactive_math_agentexamples; the integration test uses a local Ollama model and needs no external service).
# Build everything
cargo build
# Unit tests (fast; no Docker)
cargo test --lib
# Integration tests (slow; requires Docker — pulls ~400 MB Ollama model on first run)
cargo test --test '*' -- --include-ignoredThese are enforced in CI; please run them locally before pushing:
cargo fmt --all --check
cargo clippy --all-targets --all-features -- -D warnings
cargo doc --no-depsWe also run cargo deny check and cargo audit on a schedule and on
dependency changes. If your PR touches Cargo.toml or Cargo.lock,
please run cargo deny check locally.
- Fork the repo and create a topic branch off
main. - Make your change. Keep PRs focused — one logical change per PR.
- Push the branch and open a PR against
main. Release notes are auto-generated from merged PR titles, so make sure the PR title describes the user-visible change. - CI must be green before merge.
Commit messages: we suggest (but don't require)
Conventional Commits — e.g.
feat: add streaming LLM support, fix: handle empty tool args.
The release process — version bumps, tagging, and how the tag-driven publish workflow behaves for stable and prerelease versions — is documented in RELEASING.md.
When editing src/workflow.rs or src/state.rs, keep the determinism
contract intact: the workflow must be reproducible on replay. No
wall-clock, no random, no I/O — that all lives in
src/activities.rs. See AGENTS.md for
the full rules.
Use the bug report issue template. Include your OS, Rust version, Temporal CLI version, and a minimal repro.
See SECURITY.md. Do not open public issues for security problems.
This project follows the Contributor Covenant. By participating, you agree to abide by its terms.