Thanks for your interest in contributing! Here's how to get started.
- Rust 1.75+ — install via rustup
- Docker — running locally for integration testing
- Clone the repo and build:
git clone https://github.com/manthan787/anycode.git
cd anycode
cargo build
cargo testAnycode is a Cargo workspace with three crates:
anycode-core— library crate with all business logic (config, DB, messaging, infra, sandbox, control, session)anycode-bin— binary crate with CLI entrypointanycode-setup— interactive TUI setup wizard (ratatui/crossterm, no dependency onanycode-core)
All traits, types, and implementations live in anycode-core. The binary just wires things together and starts the daemon. The setup wizard is a standalone tool that generates config.toml and runs the build.
See agents.md for detailed architecture documentation.
- Create
crates/anycode-core/src/messaging/your_provider.rs - Implement the
MessagingProvidertrait (seetraits.rsfor the interface) - Re-export from
messaging/mod.rs - Add config section in
config.rsand wire it up inmain.rs
See existing implementations in telegram.rs and slack.rs for reference.
- Create
crates/anycode-core/src/infra/your_provider.rs - Implement the
SandboxProvidertrait - Add a variant to
AnySandboxProviderininfra/provider.rs - Re-export from
infra/mod.rs - Add config section in
config.rsand wire it up inmain.rs
- Run
cargo fmtbefore committing - Run
cargo clippyand fix warnings - Add tests for new functionality
- Keep error handling explicit — use
Result<T>, avoid.unwrap()in non-test code
Use descriptive commit messages. Start with a verb in imperative form:
Add Slack messaging provider
Fix SSE reconnection on timeout
Update Docker provider to use builder API
- Fork the repo and create a feature branch
- Make your changes with tests
- Ensure
cargo testandcargo clippypass - Open a PR with a clear description of what changed and why
Open an issue on GitHub with:
- What you expected to happen
- What actually happened
- Steps to reproduce
- Rust version, OS, Docker version