Thank you for your interest! This project uses a multi-language approach — Go, Rust, and TypeScript are equal peer implementations.
- Fork the repo
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes
- Run the full test suite:
make test-all - Submit a PR
- Go 1.22+, Rust stable, Node.js 22 are required
- Build all:
make build-all - Test all:
make test-all - Lint all:
make lint-all
All three languages implement the same architecture:
policy/— Policy types + Manager (loads YAML)middleware/— Gate trait + Chain (6 gates + 1 mutator)proxy/— Router (default-deny) + Handler + Transport
Changes should be applied to all three implementations unless they are language-specific (e.g., CLI flag parsing).
- Follow existing patterns in the language directory
- Tests use the language's standard test framework (no external test deps)
- Go: stdlib
testing, Rust:#[cfg(test)]inline modules, TS:node:test - Gates return
Err/error(rejected) orOk/null(allowed) - Transport is abstracted for testability
- Ensure all tests pass:
make test-all - Update the Quint spec if adding new endpoints or gates
- Update README.md if changing configuration or behavior
- PRs require at least one review
All contributors must follow our Code of Conduct.