First off, thank you for considering contributing to duetcode! It's people like you that make open source such a great community.
- Ensure you have Rust installed (1.80+)
- Clone the repository:
git clone https://github.com/harsha509/duetcode.git cd duetcode - Build the project:
cargo build
- Run tests:
cargo test
dt is built around an interactive state machine that orchestrates two LLM agents:
- Writer: Implements code changes or answers questions (default: Claude)
- Reviewer: Reviews diffs and linter/test outputs (default: Gemini)
- Orchestrator: The CLI itself, which manages state, runs local checks, and prompts the user for decisions.
Key directories:
src/adapters/: Implementations for different LLM providers (Claude CLI, Gemini API)src/orchestrator.rs: The main state machine and user interaction loopsrc/policy.rs: Logic for parsing reviewer verdicts (APPROVED / CHANGES_REQUESTED)src/checks.rs: Execution of local linters and tests
- Fork the repo and create your branch from
main. - If you've added code that should be tested, add tests.
- Ensure the test suite passes (
cargo test). - Make sure your code lints (
cargo clippy). - Format your code (
cargo fmt). - Issue that pull request!
By contributing, you agree that your contributions will be licensed under its MIT License.