How chris-ritsen/network-audio-controller works
NetAudio provides CLI and browser control, a persistent daemon, and a shared Rust protocol core for Dante discovery, routing, configuration, and monitoring. A typical workflow is a user request through the CLI or web interface, daemon orchestration, device operations over the network, then state or events returned to the client. The README also documents native iOS control, DDM, presets, and automation; these are retained as capability branches. Some links reflect README documentation because their implementing source was not sampled.
Main entry points: application.py Dante application · client.rs Rust client · server.py Daemon runtime · cli.py Command line
Components 25
User interfaces
- Command line
packages/netaudio/src/netaudio/cli.py - Web interface
packages/netaudio/src/netaudio/daemon/http/webapp/app.js - HTTP API
packages/netaudio/src/netaudio/daemon/http/api.py - Native iOS app
Daemon services
- Daemon runtime
packages/netaudio/src/netaudio/daemon/server.py - Event dispatcher
packages/netaudio/src/netaudio/dante/events.py - Event history
packages/netaudio/src/netaudio/monitoring/journal.py
Dante operations
- Dante application
packages/netaudio/src/netaudio/dante/application.py - Device discovery
packages/netaudio/src/netaudio/dante/discovery.py - Status notifications
packages/netaudio/src/netaudio/dante/services/notification_packet_handlers.py - Shure integration
packages/netaudio/src/netaudio/shure/manager.py
Protocol core
- Rust client
packages/netaudio-core/src/client.rs - Command specifications
packages/netaudio-core/src/spec/command_spec.rs - Packet parser
packages/netaudio-core/src/parser.rs - Protocol encoding
packages/netaudio-core/src/protocol.rs - Byte utilities
packages/netaudio-core/src/bytes.rs - C interface
packages/netaudio-core/src/ffi/client_actions.rs
Product capabilities
- DDM control
packages/netaudio/src/netaudio/ddm/controller.py - Device presets
packages/netaudio/src/netaudio/presets/loading.py - Monitoring
packages/netaudio/src/netaudio/monitoring/operations.py
Other components
- CLI user
- Browser user
- iOS user
- Dante devices
- DDM network
Connections 27
- CLI user → Command line: invokes
- Browser user → Web interface: uses
- iOS user → Native iOS app: uses
- Command line → Daemon runtime: requests control
- Web interface → HTTP API: requests data
- HTTP API → Daemon runtime: routes requests
packages/netaudio/src/netaudio/daemon/server.py - Daemon runtime → Dante application: orchestrates
packages/netaudio/src/netaudio/daemon/server.py - Daemon runtime → Event dispatcher: publishes events
packages/netaudio/src/netaudio/daemon/server.py - Event dispatcher → Event history: records events
- Dante application → Device discovery: discovers devices
- Dante application → Status notifications: handles status
packages/netaudio/src/netaudio/dante/application.py - Status notifications → Packet parser: parses packets
packages/netaudio/src/netaudio/dante/services/notification_packet_handlers.py - Dante application → Rust client: sends commands
- Rust client → Command specifications: uses specifications
packages/netaudio-core/src/client.rs - Rust client → Protocol encoding: builds packets
packages/netaudio-core/src/client.rs - Packet parser → Protocol encoding: validates envelopes
packages/netaudio-core/src/parser.rs - Packet parser → Byte utilities: reads fields
packages/netaudio-core/src/parser.rs - C interface → Rust client: invokes client
packages/netaudio-core/src/ffi/client_actions.rs - Rust client → Dante devices: exchanges packets
- Dante application → Dante devices: controls and monitors
- Native iOS app → Dante devices: controls directly
- Native iOS app → DDM network: supports managed networks
- Dante application → DDM control: uses managed control
- DDM control → DDM network: controls devices
- Command line → Device presets: applies presets
- Dante application → Monitoring: provides monitoring
- Dante application → Shure integration: integrates events
packages/netaudio/src/netaudio/shure/manager.py