Download docs/ARCHITECTURE.md from meccatronis/iosdiag: direct link, hf CLI and curl.
- Browser
- Download file 5.6 kB
-
https://huggingface.co/meccatronis/iosdiag/resolve/main/docs/ARCHITECTURE.md
- Command line
-
hf download hf://meccatronis/iosdiag/docs/ARCHITECTURE.md
-
curl -L -o ARCHITECTURE.md https://huggingface.co/meccatronis/iosdiag/resolve/main/docs/ARCHITECTURE.md
iOSDiag Architecture
Overview
iOSDiag is built on a layered architecture that separates concerns and enables modularity, testability, and extensibility.
Architecture Layers
1. Transport Layer
Location: src/transport/
Handles communication with iOS devices via different protocols:
- USBMUX: Direct USB connection via usbmuxd daemon
- CoreDevice: Network-based tunnel for newer iOS versions
Key Components:
Transporttrait: Abstract interface for device communicationIoStreamtrait: Abstract interface for data streams- Protocol-specific implementations
2. Security & Pairing Layer
Location: src/security/
Manages device pairing and cryptographic operations:
- Pairing: Establish trust with devices
- Crypto: RSA/ECDSA operations, certificate handling
- PairingStore: Persistent storage of pair records
Key Components:
PairRecord: Device pairing informationPairingStore: Pair record management- Cryptographic utilities
3. Service Layer
Location: src/services/
Implements iOS service clients:
- Lockdown: Device configuration and service management
- DiagnosticsRelay: Hardware diagnostics data
- CrashReport: Crash and panic logs
- Syslog: System logs
Key Components:
- Service client implementations
- Message protocol handling
- Response parsing
4. Collection Layer
Location: src/collectors/
Gathers evidence from devices:
- DeviceInfo: Device identification
- Battery: Battery health metrics
- Charging: Power path information
- NAND: Storage health
- Wi-Fi: Radio diagnostics
- Thermal: Temperature sensors
- Reboot: Restart and panic events
Key Components:
Collectortrait: Evidence gathering interface- Collector implementations
EvidenceItem: Standardized evidence format
5. Normalization Layer
Location: src/normalize/
Converts raw evidence to canonical format:
- CanonicalReport: Standardized data structure
- Adapters: Format conversion utilities
- Versioning: Schema versioning support
Key Components:
CanonicalReport: Normalized data model- JSON schema definitions
- Version management
6. Inference Layer
Location: src/inference/
Analyzes evidence and generates findings:
- InferenceEngine: Rule evaluation
- RuleDSL: Rule definition language
- Scoring: Confidence calculation
Key Components:
InferenceEngine: Main analysis engineDiagnosticRule: Rule definitionsScorer: Confidence scoring
7. Report Layer
Location: src/report/
Generates output reports:
- JSON: Structured data export
- HTML: Human-readable reports
- PDF: Printable reports
Key Components:
Report: Report data modelReportBuilder: Builder pattern for reports- Format-specific generators
8. CLI Layer
Location: crates/iosdiag-cli/
Command-line interface:
- Device discovery
- Pairing management
- Diagnostics collection
- Report generation
Data Flow
User Input (CLI)
↓
Transport Selection
↓
Device Discovery
↓
Pairing/Authentication
↓
Service Connection
↓
Evidence Collection
↓
Data Normalization
↓
Inference Analysis
↓
Report Generation
↓
Output (JSON/HTML/PDF)
Module Dependencies
CLI
├── Core Library
│ ├── Transport
│ │ └── Security
│ ├── Services
│ │ └── Security
│ ├── Collectors
│ │ └── Services
│ ├── Normalize
│ │ └── Collectors
│ ├── Inference
│ │ └── Normalize
│ └── Report
│ └── Normalize
└── Knowledge Base
└── Inference
Design Patterns
1. Trait-Based Abstraction
Transport,IoStream,Collectortraits enable pluggable implementations- Facilitates testing with mock implementations
2. Builder Pattern
ReportBuilderfor constructing complex reports- Fluent API for configuration
3. Strategy Pattern
- Multiple transport implementations (USBMUX, CoreDevice)
- Multiple report formats (JSON, HTML, PDF)
4. Factory Pattern
create_transport()for transport instantiationgenerate_report()for report generation
Error Handling
Comprehensive error types:
TransportError: Communication failuresProtocolError: Protocol violationsSecurityError: Authentication/pairing issuesServiceError: Service-level errorsCollectorError: Data collection failuresInferenceError: Analysis failures
Concurrency
- Async/Await: Tokio-based async runtime
- Send + Sync: Thread-safe components
- Mutex: Protected shared state
Testing Strategy
- Unit Tests: Individual module testing
- Integration Tests: Multi-module workflows
- Fixtures: Mock data and responses
- Smoke Tests: End-to-end scenarios
Extension Points
- New Collectors: Implement
Collectortrait - New Services: Add service client implementations
- New Rules: Add YAML rules to knowledge base
- New Transports: Implement
Transporttrait - New Report Formats: Add format generators
Performance Considerations
- Lazy loading of collectors
- Parallel evidence collection
- Streaming report generation
- Efficient plist parsing
- Connection pooling for services
Security Considerations
- No private key exposure
- Secure pair record storage
- TLS for network communication
- Input validation
- Cryptographic verification
Last Updated: 2026-02-10
Version: 1.0.0