Skip to content

Contributing

Provara is open source under the MIT license. Contributions are welcome.

Terminal window
# Clone the repository
git clone https://github.com/hunt-info-systems/provara.git
cd provara
# Install with dev dependencies
uv venv
uv sync --extra dev
# Verify setup
uv run pytest tests/ -v
ToolPurpose
pytestTest runner
pytest-asyncioAsync test support
pytest-covCoverage reporting
mypyStatic type checking
ruffLinting and formatting
  • 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
Terminal window
# Check linting
uv run ruff check src/
# Auto-fix issues
uv run ruff check src/ --fix
# Type checking
uv run mypy src/
Terminal window
# Run all tests
uv run pytest tests/ -v
# With coverage
uv run pytest tests/ --cov=src --cov-report=term-missing

Tests use pytest with asyncio_mode = "auto" for async test support.

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 configuration
  • 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
  • Prometheus metrics/metrics endpoint 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
  • OpenAPI customization — Enhanced API documentation
  • Docker support — Containerized deployment
  • CI/CD pipeline — GitHub Actions for testing and release
  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/my-feature
  3. Write tests for your changes
  4. Ensure all checks pass:
    Terminal window
    uv run ruff check src/
    uv run mypy src/
    uv run pytest tests/ -v
  5. Submit a pull request with a clear description

If you discover a security vulnerability:

  1. Do not open a public issue
  2. Email details to the maintainers
  3. Include steps to reproduce
  4. Allow time for a fix before disclosure

By contributing, you agree that your contributions will be licensed under the MIT License.