Echelon Capture Architecture
``` Left iPhone Right iPhone Apple Watch (optional) │ │ │ └─────────── WebSocket: /visualization?device_id=<role> ───────────┐ │ cc-mcs │ WebSocket: /ws/latent │ Perform tab ```
Full Public Reader
Echelon Capture Architecture
System Overview
Left iPhone Right iPhone Apple Watch (optional)
│ │ │
└─────────── WebSocket: /visualization?device_id=<role> ───────────┐
│
cc-mcs
│
WebSocket: /ws/latent
│
Perform tabData Flow
1. Motion capture
- `MotionStreamer` reads CoreMotion at the configured sample rate
- `ComprehensiveSensorManager` can add extra sensors when enabled
2. Streaming
- Sensor frames are encoded with cc-protocol models
- `WebSocketService` sends frames to `/visualization?device_id=<role>`
3. Perform mode
- `LatentStreamService` subscribes to `/ws/latent?device_id=<role>`
- `StrudelEngine` generates audio from `strudel-engine.html`
4. Recording
- `SessionManager` + `StorageService` write JSONL motion and WAV audio
- Sessions stored under `Documents/Sessions/<sessionId>/`
App Structure
- Views: Perform, Stream, Record, Settings
- Core services: MotionStreamer, NetworkService, WebSocketService, LatentStreamService
- Local storage: SessionManager, StorageService, AudioRecorder
Backend Endpoints
- `GET /health` for connection checks
- `WS /visualization?device_id=<role>` for sensor frames (cc-protocol)
- `WS /ws/latent?device_id=<role>` for latent/pattern messages
Latent Stream Message Types
- `latent_state` → `ProtocolLatentState`
- `pattern_edit` → Strudel edits
- `section_change`
- `conductor_status`
Promotion Decision
Promote into a technical note or architecture paper with implementation anchors.
Source Anchor
Comp-Core/apps/ios/EchelonCapture/docs/ARCHITECTURE.md
Detected Structure
Method · Figures · Architecture