Thank you for your interest in contributing to Facto! We welcome contributions from the community.
- Docker and Docker Compose
- Go 1.21+
- Rust 1.70+
- Python 3.10+
- Node.js 18+
-
Clone the repository:
git clone https://github.com/facto-ai/facto.git cd facto -
Start infrastructure:
docker compose up -d
-
Build services:
# Ingestion service (Rust) cd server/ingestion && cargo build --release # Processor (Go) cd server/processor && go build -o processor . # API (Go) cd server/api && go build -o api .
-
Install Python SDK for testing:
pip install -e sdk/python
Required step! This ensures all tests pass before any push:
bash scripts/install_hooks.shThis installs a pre-push hook that automatically runs unit and security tests before allowing pushes.
Facto has a comprehensive test suite. Use the master test runner:
# Fast mode (unit + security) — runs automatically on push
python run_tests.py --fast
# Full suite (requires running services)
python run_tests.py
# Include load tests
python run_tests.py --with-loadTest categories:
| Category | Command | Requires Services |
|---|---|---|
| Unit | pytest sdk/python/tests |
No |
| Security | python tests/security/test_tamper_resistance.py |
No |
| Integration | pytest tests/integration |
Yes |
| Load | python tests/load/load_test.py |
Yes |
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Install hooks:
bash scripts/install_hooks.sh - Make your changes
- Run tests:
python run_tests.py - Commit your changes (
git commit -m 'Add amazing feature') - Push to your branch — tests run automatically
- Open a Pull Request
- Go: Follow standard Go formatting (
gofmt) - Rust: Follow standard Rust formatting (
cargo fmt) - Python: Follow PEP 8
- TypeScript: Use Prettier
Open an issue or start a discussion. We're happy to help!