Extension Points Overview
EagleEye is designed for extension. This guide helps you choose the right extension type for your goal.
Decision guide
| Goal | Extension type | Location |
|---|---|---|
| Add lightweight frame processing | Secondary operation | src/secondary_operations/ |
| Add ML model inference or complex orchestration | Main operation | src/main_operations/definitions/ |
| Integrate a new accelerator (TPU, FPGA, etc.) | New device | src/utils/device_registry.py + model/runtime support |
| Add performance-critical frame processing in Rust | Rust module | src/rust_implementations/ |
| Add a new page or tool to the WebUI | New UI tab | src/webui/ |
Extension complexity
| Type | Typical complexity | Restart required |
|---|---|---|
| Secondary operation | Low | Yes |
| Main operation | Medium | Yes |
| New device | Medium | Yes |
| Rust module | High (Rust knowledge needed) | Yes (+ recompile) |
| New UI tab | Medium (JS + Handlebars) | No (just rebuild frontend) |
Common extension checklist
For any new operation (main or secondary):
- Implement the class extending
OperationInstance - Create the config def JSON (
_config_def.json) - Add to a pipeline config (via WebUI or JSON)
- Restart the backend
For devices:
- Extend
DeviceRegistry.discoverwith a canonical descriptor. - Add model-artifact selection and operation/runtime support.
- Reference the canonical device ID in operation
action_params.