Skip to main content

Description

This is a python program for controlling Dante network audio devices (and possibly others in the future). It's early, so expect things to break or switches to change. Use this at your own risk; it's not ready for anything other than a test environment and could make the devices behave unexpectedly. The first goal is to do everything that Dante Controller can do that would be useful for control of the devices from a command-line interface or within scripts.

For more information, check out the gearspace discussion.

Features

Current

  • AVIO input/output gain control
  • AES67 readiness in the browser: supported and active modes, pending changes, and DDM-reported RTP flow availability
  • Add/remove subscriptions
  • CLI and browser interface
  • Cross-platform daemon
  • DDM-enrolled device settings in the browser, including latency, encoding, analog gain, preferred leader, network configuration, reboot, and sample-rate controls for supported models
  • Primary and secondary DHCP/static network configuration on supported Wing devices, through the browser, CLI and API, including DDM-managed control
  • Device lock/unlock
  • Display active subscriptions, Rx and Tx channels, devices names and addresses, subscription status
  • JSON output
  • Bounded monitoring event journal with CLI, JSON export, API, and browser history
  • Lifecycle-managed monitoring issues with current/history CLI, API, SSE, and browser views
  • SAP/SDP external RTP flow discovery and direct receiver subscription
  • ConMon interface statistics with raw records, rates, errors, and freshness
  • Canonical transmit-flow planning, verified create/delete, HTTP API, browser controls, and presets
  • Versioned preset round trips with explicit identity mapping, multi-interface support, and verified apply reports
  • Set device latency, sample rate, encoding
  • Set/reset channel names, device names
  • mDNS device discovery

Installation

To install from PyPI:

uv tool install netaudio

Or with pip/pipx:

pip install netaudio

To install from a clone (requires Python 3.9+ and a Rust toolchain):

uv sync
uv run netaudio

Arch Linux

To install from AUR, build the package with aur/netaudio.

Usage

Run netaudio if installed globally, or uv run netaudio from a clone. Use --help to list commands and options.

To open the browser interface:

netaudio daemon start
netaudio daemon web --open

The server reports its installed version at GET /server-info and during local-network discovery. A Git revision is included when the installation metadata identifies a Git commit.

Run tests:

uv run pytest -q
cargo test --manifest-path packages/netaudio-core/Cargo.toml

Lint and format:

uv run ruff check .
uv run ruff format .
HTTPS

The daemon serves plain HTTP by default. If you already have a certificate for the machine, the daemon can additionally serve HTTPS on a second port; nothing is generated or managed for you:

[daemon]
tls_certificate = "/etc/netaudio/daemon.crt"
tls_key = "/etc/netaudio/daemon.key"
tls_port = 9443

Relative paths resolve against the config file's directory, tls_port defaults to 9443, and the HTTP port keeps working for local tools. netaudio daemon tls shows the active configuration and the certificate's SHA-256 fingerprint; netaudio daemon web lists the HTTPS addresses alongside HTTP. The Bonjour record carries the HTTPS port as tls_port. Clients trust the certificate through their normal trust store, so a certificate signed by a CA your devices already trust is the least friction.

Managed operation permissions

Writes to an enrolled device fail closed until its saved DDM context explicitly permits each operation. Add operation_permissions to the context in the NetAudio configuration file:

[ddm.contexts.studio]
server = "manager"
domain_id = "0123456789abcdef0123456789abcdef"
operation_permissions = ["identify", "sample_rate", "encoding"]

Accepted operation names are identify, sample_rate, encoding, sample_rate_pullup, aes67, static_ipv4, redundancy, codec_control, and locking. Omitting the setting means permission has not been configured; an empty array explicitly permits no operations. Device capability, current configuration state, lock state, and transport support can still prevent a listed operation. Managed lock and unlock remain unavailable because NetAudio has no verified DDM transport for them.

Documentation

Receiver flow queries retain partial replies and identify them as incomplete. The last complete inventory remains available, but a partial readback cannot confirm missing flows or completed changes. Automatic retrieval of receiver-flow continuation pages is not yet supported.

Metadata

Release files for netaudio 0.3.13

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for netaudio 0.3.13
File Size Uploaded
netaudio-0.3.13.tar.gz 858.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for netaudio 0.3.13
File
netaudio-0.3.13-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
netaudio-0.3.13-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details
netaudio-0.3.13-py3-none-manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64 Details
netaudio-0.3.13-py3-none-macosx_11_0_x86_64.whl Python 3 none macOS 11.0+ x86-64 Details
netaudio-0.3.13-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details

Total release size: 8.4 MB

Release files / netaudio-0.3.13.tar.gz

Download URL netaudio-0.3.13.tar.gz
Size 858.8 kB
Tags Source
SHA-256 checksum
How to use checksums
85067f57ea49837fb361fed94b2fb5d3383bacfba28ff46f28164cd6c47c2d5f
BLAKE2b-256 checksum
How to use checksums
048dd696f2eaa13aae4a9c66b736fe9582d8c9acdfc1a8f32d396b1e08ddd5e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / netaudio-0.3.13-py3-none-win_amd64.whl

Download URL netaudio-0.3.13-py3-none-win_amd64.whl
Size 1.4 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
dad42f41959db3bc17b89e852346df5fdacc3cc3fae7adc8d3b72d9de63fefc4
BLAKE2b-256 checksum
How to use checksums
5b31e0d36255a5587d483067df15972d5b606a9cdba3540df03fa810b932936f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / netaudio-0.3.13-py3-none-manylinux_2_28_x86_64.whl

Download URL netaudio-0.3.13-py3-none-manylinux_2_28_x86_64.whl
Size 1.6 MB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
ec79ea59f823d1ef50bc375c8e4cf4d588935522edc698fb56035ce7abd39f4a
BLAKE2b-256 checksum
How to use checksums
9c69586fe31386ee123701c6039c34eaee55fc9aaf16ded28a3e7c3b88999f8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / netaudio-0.3.13-py3-none-manylinux_2_28_aarch64.whl

Download URL netaudio-0.3.13-py3-none-manylinux_2_28_aarch64.whl
Size 1.5 MB
Tags Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
2a9c703b4553eb85b44a90771c84dbaf5e9958cc0fb5588a46432c5fa3bdeb86
BLAKE2b-256 checksum
How to use checksums
b2a9d168abfd96e60aa433864151aca2b1b1ff9119145e81d15e0d1ad55cc720
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / netaudio-0.3.13-py3-none-macosx_11_0_x86_64.whl

Download URL netaudio-0.3.13-py3-none-macosx_11_0_x86_64.whl
Size 1.5 MB
Tags Python 3 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
ab7789782a5a504e37eb7c3e51cdb64872d7aac5099fbd12d7ac14165231940b
BLAKE2b-256 checksum
How to use checksums
99df48dcda78da36da3382d9979f8a076d01f0ff193b1e0ea7e96abe1f90959e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release files / netaudio-0.3.13-py3-none-macosx_11_0_arm64.whl

Download URL netaudio-0.3.13-py3-none-macosx_11_0_arm64.whl
Size 1.5 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bdf82e0af5b192ef551d357057a1f06b8125a17d6ea1f31fe83322fdaba8a3c6
BLAKE2b-256 checksum
How to use checksums
27394a3a0f979230e4445a91ad796037c4c449d01810125fd092b61996f7c422
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 15, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.14

6 release files

This release

0.3.13 This release

6 release files

0.3.12

6 release files

0.3.9

6 release files

0.3.7

6 release files

0.3.6

6 release files

0.3.5

6 release files

0.3.4

6 release files

0.3.3

6 release files

0.3.1

6 release files

0.3.0

6 release files

0.2.5

5 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page