Contributions welcome. Here's how to get started.
- Fork the repository and clone it locally
- Install Rust 1.70+: rustup.rs
- Build the project:
cd sidecar cargo build - Run tests:
cargo test --lib -- --test-threads=1 # Config tests need single thread cargo test --test integration_test
vac/
├── sidecar/ # Core VAC sidecar implementation
├── control-plane/ # Mock control plane for testing
├── demo-api/ # Demo upstream API
├── docs/ # Documentation
└── adapters/ # WASM adapter examples
- Check existing issues first
- Include Rust version (
rustc --version) - Provide minimal reproduction steps
- Include relevant logs (with sensitive data redacted)
- Open an issue with
[Feature]prefix - Describe the use case and expected behavior
- Reference relevant sections of the Architecture or API docs
- Create a branch from
main - Write tests for new functionality
- Follow Rust conventions:
cargo fmtandcargo clippy - Update documentation if needed
- Keep commits atomic with clear messages
- Run
cargo fmtbefore committing - Run
cargo clippyand address warnings - Add doc comments for public APIs
- Follow existing patterns in the codebase
VAC is a security-critical project. When contributing:
- Never log secrets (API keys, tokens, etc.)
- Fail closed - deny by default on errors
- Validate all inputs - especially from untrusted sources (agents)
- Review the Architecture (and policy/revocation behavior) before making security-related changes
- Unit tests go in the same file as the code (
#[cfg(test)]) - Integration tests go in
sidecar/tests/ - Config tests require
--test-threads=1due to env var isolation
- Update relevant docs in
docs/for user-facing changes - Add inline doc comments for public functions
- Keep README.md Quick Start up to date
- Read the Architecture Guide for system overview
- Check the API Reference for protocol details
- Open an issue for questions not covered in docs
By contributing, you agree that your contributions will be licensed under the MIT License.