Thanks for your interest in contributing!
git clone https://github.com/openprx/prx.git
cd prx
# Build
cargo build
# Run tests
cargo test --locked
# Format & lint
cargo fmt --check
cargo clippy -- -D warnings
# Release build
cargo build --release --lockedTrait-based pluggable architecture — every subsystem is swappable:
src/
├── providers/ # LLM backends → Provider trait
├── channels/ # Messaging → Channel trait
├── tools/ # Agent tools → Tool trait
├── memory/ # Persistence → Memory trait
├── nodes/ # Remote devices → Node server/client
├── observability/ # Metrics/logging → Observer trait
├── runtime/ # Platform adapters → RuntimeAdapter trait
└── security/ # Sandboxing → SecurityPolicy
- Create
src/providers/your_provider.rs - Implement
Providertrait - Register in
src/providers/mod.rsfactory
- Create
src/channels/your_channel.rs - Implement
Channeltrait - Register in channel factory
- Create
src/tools/your_tool.rs - Implement
Tooltrait (name,description,parameters_schema,execute) - Register in tool factory
-
cargo fmt --checkandcargo clippypass -
cargo test --lockedpasses - New code has tests
- No new dependencies unless necessary
- README/docs updated if adding user-facing features
- No secrets or personal data in code/tests/commits
feat: add DashScope provider
fix: path traversal edge case
docs: update configuration guide
chore: bump tokio to 1.43
- Minimal dependencies — every crate adds to binary size
- Trait-first — define the trait, then implement
- No unwrap in production — use
?,anyhow, orthiserror - Security by default — sandbox, allowlist, never blocklist
- Bugs: Include OS, Rust version, steps to reproduce
- Features: Describe use case, propose which trait to extend
- Security: See SECURITY.md
By contributing, you agree your contributions will be dual-licensed under MIT and Apache-2.0.