How black1plague2/jugaad-agent works
Jugaad Agent is an offline Android machine-condition monitoring app: a technician creates equipment, records a per-machine reference, captures later readings, and reviews scored, actionable diagnoses and history. The README documents synchronized audio and motion sensing, feature extraction, anomaly scoring, catalogue-based fault suggestions, and optional advice. Separate federated-learning capabilities train and merge classifier variants phone-to-phone over local WiFi. The architecture links reflect documented responsibilities and workflow; unsampled subsystem wiring is not inferred.
Main entry points: DiagnoseUseCase.kt Diagnosis workflow · CaptureCoordinator.kt Capture coordination · JugaadNavGraph.kt Equipment screens · CaptureBaselineUseCase.kt Reference workflow
Components 20
Technician workflow
- Equipment screens
app/src/main/java/com/jugaad/agent/ui/nav/JugaadNavGraph.kt - Result and history
app/src/main/java/com/jugaad/agent/ui/result/ResultScreen.kt
Measurement and diagnosis
- Capture coordination
app/src/main/java/com/jugaad/agent/sensor/CaptureCoordinator.kt - Phone sensors
app/src/main/java/com/jugaad/agent/sensor/AudioCapture.kt - Signal features
app/src/main/java/com/jugaad/agent/ml/FeatureExtractor.kt - Diagnosis workflow
app/src/main/java/com/jugaad/agent/domain/usecase/DiagnoseUseCase.kt - Anomaly scoring
app/src/main/java/com/jugaad/agent/ml/anomaly/AnomalyScorer.kt - Fault rules
app/src/main/java/com/jugaad/agent/ml/diagnosis/RulesEngine.kt - Maintenance advice
app/src/main/java/com/jugaad/agent/ml/advisor/MaintenanceAdvisor.kt
Domain and persistence
- Machine catalogue
app/src/main/java/com/jugaad/agent/core/config/MachineCatalog.kt - Reference workflow
app/src/main/java/com/jugaad/agent/domain/usecase/CaptureBaselineUseCase.kt - Equipment and references
app/src/main/java/com/jugaad/agent/data/repository/AssetRepositoryImpl.kt - Diagnosis history
app/src/main/java/com/jugaad/agent/data/repository/DiagnosisRepositoryImpl.kt
Federated learning
- Federated runtime
app/src/main/java/com/jugaad/agent/fl/FlRuntime.kt - On-device classifier
app/src/main/java/com/jugaad/agent/ml/classifier/FaultClassifier.kt
Peer networking
- Sync coordinator
app/src/main/java/com/jugaad/agent/p2p/FedAvgCoordinator.kt - Sync service
app/src/main/java/com/jugaad/agent/p2p/FlSyncService.kt - Peer discovery
app/src/main/java/com/jugaad/agent/p2p/LanDiscovery.kt
Other components
- Technician
- Nearby phones
Connections 24
- Technician → Equipment screens: uses
- Equipment screens → Reference workflow: starts reference
- Equipment screens → Capture coordination: starts reading
- Reference workflow → Capture coordination: records clips
- Capture coordination → Phone sensors: samples together
- Capture coordination → Signal features: extracts features
- Signal features → Reference workflow: forms reference
- Reference workflow → Equipment and references: saves reference
- Diagnosis workflow → Capture coordination: captures reading
- Diagnosis workflow → Signal features: extracts features
- Diagnosis workflow → Equipment and references: reads reference
- Diagnosis workflow → Anomaly scoring: scores deviation
- Diagnosis workflow → Fault rules: ranks issues
- Fault rules → Machine catalogue: evaluates faults
- Diagnosis workflow → On-device classifier: classifies fault
- Diagnosis workflow → Maintenance advice: requests action
- Diagnosis workflow → Diagnosis history: saves result
- Equipment screens → Diagnosis workflow: requests diagnosis
- Result and history → Diagnosis history: shows readings
- Federated runtime → On-device classifier: trains head
- Sync service → Peer discovery: advertises node
- Sync service → Sync coordinator: runs rounds
- Sync coordinator → Nearby phones: exchanges weights
- Nearby phones → Peer discovery: announces presence