Contributing to Beava
May 13, 2026 · View on GitHub
Thanks for your interest in Beava. This guide covers the local build, test, and pull-request workflow. For what Beava is, see the README.
Prerequisites
- Rust 1.94+ (stable). Install via rustup, then add the formatter and linter:
rustup component add rustfmt clippy - Python 3.10+ with
pip. - System packages:
- Debian / Ubuntu:
sudo apt install build-essential pkg-config libssl-dev - macOS:
brew install openssl@3
- Debian / Ubuntu:
Build
git clone https://github.com/beava-dev/beava.git
cd beava
cargo build --workspace
Install the Python SDK in editable mode:
cd python && pip install -e .
Run the server
cargo run
# or, after `cargo build`:
./target/debug/beava
Defaults (override via --http-addr / --tcp-addr or env vars — see cargo run -- --help):
- HTTP / JSON listener:
127.0.0.1:8080 - Binary-framed TCP listener:
127.0.0.1:8081
When working on the Python SDK in editable mode, point it at the
freshly built local server binary with BEAVA_BINARY. This is useful
when you want pip install -e . to exercise the current Rust build
instead of a released binary on your PATH.
export BEAVA_BINARY=$(pwd)/target/debug/beava
python -m pytest python/tests
Run the tests
Run the same gates CI runs before opening a pull request.
Rust:
cargo test --workspace --features testing
Python SDK:
cd python
python -m pytest tests/v0 -q
The Python integration tests spawn the Beava binary, so run cargo build first.
Lint and format
cargo fmt --all --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
For the Python SDK:
ruff check python/beava
ruff format --check python/beava
mypy --strict python/beava
CI enforces all of the above. A pull request that fails any check will not be merged.
Pull-request workflow
- Fork
beava-dev/beavaand create a feature branch offmain. - Make your changes with tests.
- Run the gates locally:
cargo fmt --all --check \ && cargo clippy --workspace --all-targets --all-features -- -D warnings \ && cargo test --workspace --features testing - Use conventional-commits commit subjects:
type(scope): subject(feat,fix,test,refactor,chore,docs). - Open a pull request against
main. Describe what changed and why.
Reporting bugs
File issues at beava-dev/beava GitHub Issues. Good reports include:
- Beava version (
beava --version) and OS / platform. - A minimal, runnable reproducer (curl commands, JSON payload, register definition).
- Expected vs actual behavior, with logs or stack traces if the server panics.
For feature requests, describe the use case first — the operator catalogue is intentionally narrow, so we tend to extend it through real workloads rather than speculative APIs.
Reporting security vulnerabilities
Do not file security issues on the public tracker. See SECURITY.md for the disclosure process — in short: email security@beava.dev or use a GitHub private security advisory.
License
Beava is licensed under Apache 2.0. By submitting a pull request, you agree to license your contribution under the same terms.