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.

Release files for netaudio 0.3.12

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.12
File Size Uploaded
netaudio-0.3.12.tar.gz 839.8 kB Details

Built distributions (wheels)

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

Total release size: 8.2 MB

Release files / netaudio-0.3.12.tar.gz

Download URL netaudio-0.3.12.tar.gz
Size 839.8 kB
Tags Source
SHA-256 checksum
How to use checksums
eaf7567b83c3df69e97e60f27f0b987861e2094c8163fd2693c11878629afcf4
BLAKE2b-256 checksum
How to use checksums
049cc097beb5cc4098370514d863c0c1edaf4864c70df63cbf056b64609c22f0
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 14, 2026.

Transparency log

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

Download URL netaudio-0.3.12-py3-none-win_amd64.whl
Size 1.4 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
f1cb169ed9d8af1b832fa59d0c302084f65df7e2f0c7c9fb74a09f8061e1daa4
BLAKE2b-256 checksum
How to use checksums
ef986d8d1065a6f181c34d6bc84a089d20312bd60fa65edab95dea157ee21fa0
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 14, 2026.

Transparency log

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

Download URL netaudio-0.3.12-py3-none-manylinux_2_28_x86_64.whl
Size 1.5 MB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
82c2d6007c74b546186f630cd3796abd84ef0e6fefb532e6792a8b1db7b96601
BLAKE2b-256 checksum
How to use checksums
341b3472ff89d969c7ab10718eb9d4aa57b0de06034a4d371312adbda4e6ec30
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 14, 2026.

Transparency log

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

Download URL netaudio-0.3.12-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
88779d0f380522a21c4276a484a328af224855d4dab83da8889d49f0430d53c7
BLAKE2b-256 checksum
How to use checksums
7c38812ecb8153977c65f69fcb7d264a2b9b079538b66690f16d352ea7d30d15
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 14, 2026.

Transparency log

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

Download URL netaudio-0.3.12-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
990e14157310d1a52dec85b48b8ee1a877b47fcd84b3b24adc9d6ecfbce362ad
BLAKE2b-256 checksum
How to use checksums
f3bfc29051c397069627096c629bf6e25f90865006260354861f07ef6ae85c78
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 14, 2026.

Transparency log

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

Download URL netaudio-0.3.12-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
0c190afc5f8845b79894b4e6d91f637f0e86c878fccc8c861159190012edfa88
BLAKE2b-256 checksum
How to use checksums
04a2b3fbb53da7c9a8da4de28cc9ae1da5ad1955d43426beac29d680c233979c
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 14, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.14

6 release files

0.3.13

6 release files

This release

0.3.12 This release

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