simulator/
├── gsm_simulator.py            # gsm_simulator
├── launch_gsm_simulator.sh     # use to start docker and simulator, run in terminal

2 clients nect to gsm_simulator and simulate a call using noise protocol
UI/
├── main.py                     # UI setup and event handling
├── phone_manager.py            # Phone state, client init, audio logic
├── phone_client.py             # Socket communication and threading
├── client_state.py             # Client state and command processing
├── session.py                  # Noise XK crypto session
├── waveform_widget.py          # Waveform UI component
├── phone_state.py              # State constants