Contributing
Getting Started
Section titled “Getting Started”Provara is open source under the MIT license. Contributions are welcome.
Development Setup
Section titled “Development Setup”# Clone the repositorygit clone https://github.com/hunt-info-systems/provara.gitcd provara
# Install with dev dependenciesuv venvuv sync --extra dev
# Verify setupuv run pytest tests/ -vDevelopment Dependencies
Section titled “Development Dependencies”| Tool | Purpose |
|---|---|
pytest | Test runner |
pytest-asyncio | Async test support |
pytest-cov | Coverage reporting |
mypy | Static type checking |
ruff | Linting and formatting |
Code Standards
Section titled “Code Standards”- Line length: 120 characters max
- Python version: 3.12+ (use modern syntax)
- Type hints: Required for all public functions
- Docstrings: Required for all public functions and classes
Linting
Section titled “Linting”# Check lintinguv run ruff check src/
# Auto-fix issuesuv run ruff check src/ --fix
# Type checkinguv run mypy src/Testing
Section titled “Testing”# Run all testsuv run pytest tests/ -v
# With coverageuv run pytest tests/ --cov=src --cov-report=term-missingTests use pytest with asyncio_mode = "auto" for async test support.
Project Structure
Section titled “Project Structure”provara/├── src/│ ├── server/ # API server (core)│ │ ├── main.py # FastAPI endpoints│ │ ├── config.py # Configuration│ │ └── exec/ # Execution engine│ │ ├── policy.py # Security policy│ │ └── runner.py # Command runner│ ├── cli/ # CLI tools│ └── ui/ # GUI application├── agents/ # Agent integrations├── scripts/ # PowerShell utilities├── tests/ # Test suite├── docs/ # Documentation source└── pyproject.toml # Project configurationContribution Areas
Section titled “Contribution Areas”High Impact
Section titled “High Impact”- Cross-platform support — Linux/macOS command execution backends
- WebSocket approval UI — Real-time web-based approval interface
- RBAC — Role-based access control for multi-user deployments
- Command templates — Pre-approved command patterns
Medium Impact
Section titled “Medium Impact”- Prometheus metrics —
/metricsendpoint for monitoring - Command history search — Full-text search across execution records
- Dry-run mode — Test commands against policy without execution
- Batch approval — Approve multiple commands at once
Low Impact
Section titled “Low Impact”- OpenAPI customization — Enhanced API documentation
- Docker support — Containerized deployment
- CI/CD pipeline — GitHub Actions for testing and release
Pull Request Process
Section titled “Pull Request Process”- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Write tests for your changes
- Ensure all checks pass:
Terminal window uv run ruff check src/uv run mypy src/uv run pytest tests/ -v - Submit a pull request with a clear description
Security Contributions
Section titled “Security Contributions”If you discover a security vulnerability:
- Do not open a public issue
- Email details to the maintainers
- Include steps to reproduce
- Allow time for a fix before disclosure
License
Section titled “License”By contributing, you agree that your contributions will be licensed under the MIT License.