FaceFusion API - A Python REST API wrapping FaceFusion v3.5.3 for face swapping, enhancement, lip sync, and other face/frame processing. Containerized for CPU-only execution, deployed via Gitea CI/CD at `dev.pivoine.art`.
- **FastAPI** async web framework with single uvicorn worker (mandatory due to FaceFusion's global state)
- **FaceFusion** included as git submodule at `facefusion/` pinned to tag 3.5.3
- All FaceFusion processing serialized through `threading.Lock` in `facefusion_bridge.py`
- Background job queue in `worker.py` for async processing
### Key Integration Points
FaceFusion uses global mutable state (`state_manager`) and module-level ONNX inference pools. The bridge (`app/services/facefusion_bridge.py`) replicates the initialization side-effects of `program.py`:
1. Registers all job_keys and step_keys in `job_store`
2. Initializes state defaults via `state_manager.init_item()`
3. Initializes job filesystem via `job_manager.init_jobs()`
4. Symlinks `facefusion/.assets/models/` -> `/data/models/` for model persistence