# Contributing to erebyx-sdk
Thanks for your interest. The Rust SDK is a thin client over the EREBYX memory substrate — pull requests for ergonomics, retries, observability, and platform compatibility are welcome.
By contributing, you agree your contributions are licensed under [Apache-2.0](LICENSE-APACHE-2.0).
---
## Sign-off (DCO)
Every commit must be signed off using the [Developer Certificate of Origin](https://developercertificate.org/):
```bash
git commit -s -m "your message"
```
The DCO bot will block PRs without sign-off.
---
## Local dev setup
```bash
git clone https://github.com/ProjectErebyx/erebyx-sdk.git
cd erebyx-sdk
cargo build
cargo test
```
Required toolchain:
- Rust 1.75 or later (`rustup install stable`)
- `cargo fmt` + `cargo clippy` components
---
## Test commands
```bash
cargo test # unit + integration (uses wiremock)
cargo fmt --check # formatting
cargo clippy --all-targets --all-features -- -D warnings # lint (zero warnings)
cargo doc --no-deps # confirm docs build
```
All four must pass before a PR is reviewed.
---
## Commit conventions
Follow [Conventional Commits](https://www.conventionalcommits.org/):
```
feat(client): add streaming search
fix(circuit): reset breaker on first success after half-open probe
docs(readme): clarify hint semantics
chore(deps): bump reqwest to 0.12.5
```
Types we use: `feat`, `fix`, `docs`, `chore`, `refactor`, `test`, `perf`.
Subject in imperative mood, ≤72 chars. Body explains *why*, not *what*.
---
## Pull request template
When you open a PR, include:
1. **What changed** — one paragraph
2. **Why** — the user-visible problem this fixes
3. **How verified** — `cargo test` output, sample program, repro steps
4. **Risk surface** — backward-compat / breaking-change assessment for the public API
Public-API changes (`lib.rs`, `types.rs`, `error.rs`) require an extra reviewer.
---
## Scope
The SDK surfaces the v0.1.1 cognitive verbs: `restore_identity`, `load_context`, `save`, `search`, `wrap_up`. All EREBYX processing — memory understanding, recall, organization, encryption — lives in the closed-source `erebyx-os` engine. Client-side issues — connection handling, error types, builder ergonomics, async behavior, `X-Erebyx-Hint` parsing, circuit breaker tuning — are in scope here.
Out of scope: anything that would require a substrate change. File those as issues on `erebyx-os` instead.
---
## Bug reports
Open a [GitHub Issue](https://github.com/ProjectErebyx/erebyx-sdk/issues). Include:
- `cargo --version` + Rust version
- OS + target triple
- `erebyx-sdk` version
- Minimum reproducer (a `main.rs` we can `cargo run`)
- Full error output
---
## Security disclosures
Don't open public issues for security findings. See [SECURITY.md](SECURITY.md).
---
**Built by EREBYX, LLC** — `https://erebyx.com`