Skip to main content

Darwin USB network interface configurator for management access to network devices

Project description

Darwin Management NIC Configurator

Configure a USB Ethernet adapter for out-of-band management without letting it take over normal Wi-Fi or tailnet connectivity.

darwin-nic is aimed at bastion and bench workflows where a Mac needs a temporary management link to network gear while keeping its primary network path intact.

Status

  • macOS is the primary supported platform.
  • Linux support is experimental and currently limited.
  • Release artifacts are PyPI distributions, GitHub Release wheel/source files, Nix packages, and FlakeHub releases.
  • The PyInstaller spec is retained for manual builds, but standalone binaries are not the primary release artifact yet.
  • Public docs are built with MkDocs and published at https://transscendsurvival.org/DarwinNicUtil/.

Quick Start

# Recommended CLI install
uv tool install darwin-mgmt-nic-configurator
darwin-nic status
darwin-nic init-config
darwin-nic configure --profile homelab --preserve-wifi

# Run without installing, using the stable FlakeHub release
nix run "https://flakehub.com/f/Jesssullivan/DarwinNicUtil/v2.1.2" -- status

For a one-off setup without a saved profile:

darwin-nic configure \
  --device-ip <device-ipv4> \
  --laptop-ip <usb-nic-ipv4> \
  --mgmt-network <cidr> \
  --preserve-wifi

Install

Path Use When Command
PyPI You want the normal CLI on your PATH uv tool install darwin-mgmt-nic-configurator
FlakeHub You want a stable Nix release nix profile install "https://flakehub.com/f/Jesssullivan/DarwinNicUtil/v2.1.2"
GitHub flake You want the current repository flake nix profile install github:Jesssullivan/DarwinNicUtil
Source checkout You are developing or testing local changes uv sync --extra dev && uv run darwin-nic status

Wheel and source distribution files are attached to GitHub Releases and published to PyPI. Standalone binary downloads are not supported yet.

Home Manager and System Manager modules are available under nix/modules/. For the release shape and productionization summary, see docs/project-spec.md.

Commands

Command Description
darwin-nic setup Interactive guided setup wizard
darwin-nic configure Configure a USB NIC
darwin-nic status Show interfaces, routes, and bastion diagnostics
darwin-nic dashboard Show network monitoring status
darwin-nic test Run basic connectivity checks
darwin-nic restore Restore saved network service order
darwin-nic config Show resolved settings and profiles
darwin-nic profiles List available profiles
darwin-nic init-config Create a starter config file

Configuration

Settings are loaded in this order, with later sources overriding earlier ones:

Location Purpose
/etc/darwin-nic/config.toml System-wide defaults
~/.config/darwin-nic/config.toml User defaults
~/.darwin-nic.toml Legacy user config
./.darwin-nic.toml Directory-local override
./darwin-nic.toml Alternate directory-local override
DARWIN_NIC_* Environment overrides

Example:

default_profile = "homelab"

[defaults]
preserve_wifi = true

[profiles.homelab]
device_ip = "192.168.88.1"
laptop_ip = "192.168.88.100"
mgmt_network = "192.168.88.0/24"
device_name = "Lab Management Device"
device_type = "network"

See examples/config.toml for a fuller profile example.

Bastion Notes

For a generic tailnet -> bastion host -> USB OOB NIC -> managed network device flow:

  • keep mgmt_network aligned with the real management subnet;
  • use darwin-nic status before making privileged changes;
  • use --dry-run to preview interface and route changes;
  • pre-authenticate with sudo -v for non-interactive wrappers;
  • check status when raw or link-layer tools work but ordinary sockets fail.

On macOS, status includes scutil --nwi, Tailscale system-extension state, and recent NECP socket-drop hints when available.

Device-specific hostnames, credentials, OOB MAC addresses, and switch policy belong in downstream operator repositories, not in this generic tool.

Safety

  • Protected interfaces such as Wi-Fi, loopback, and system virtual links are not modified.
  • --preserve-wifi keeps the primary network path ahead of the USB NIC.
  • Dry-run mode previews intended changes without applying them.
  • The emergency restore helper is available at scripts/emergency-restore.sh.

Requirements

  • Python 3.14+ for source and uv installs.
  • Nix for flake-based package usage.
  • A USB-to-Ethernet adapter.
  • macOS for the full current feature set.

Development

just dev
just check
just test
just docs-build
uv build

Run just with no arguments to see all recipes.

Artifacts

Current release artifacts are:

  • PyPI distribution for darwin-mgmt-nic-configurator;
  • GitHub Release wheel and source distribution files;
  • Nix flake package outputs, including FlakeHub v2.1.2;
  • MkDocs site artifacts from the docs workflow.

GitHub Release, PyPI, FlakeHub, and docs workflows are present for tag-based publication. Standalone binary distribution remains a tracked release follow-up.

Public artifact URLs:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

darwin_mgmt_nic_configurator-2.1.2.tar.gz (135.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

darwin_mgmt_nic_configurator-2.1.2-py3-none-any.whl (63.2 kB view details)

Uploaded Python 3

File details

Details for the file darwin_mgmt_nic_configurator-2.1.2.tar.gz.

File metadata

File hashes

Hashes for darwin_mgmt_nic_configurator-2.1.2.tar.gz
Algorithm Hash digest
SHA256 791340a6b26a98da1f850a37c7c5f937f7f5b51ee9151ecbf6c686c37c37ff90
MD5 657e0e5392881c6cd0b2969e5790f193
BLAKE2b-256 100088f05fca6683a8b05113576e3e9baca1c0f28c078d7a345b09f366718260

See more details on using hashes here.

Provenance

The following attestation bundles were made for darwin_mgmt_nic_configurator-2.1.2.tar.gz:

Publisher: release.yml on Jesssullivan/DarwinNicUtil

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file darwin_mgmt_nic_configurator-2.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for darwin_mgmt_nic_configurator-2.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ba47ce7e858131ad7d8645759b57192c9c481b88f85a1e9c90f1ab8a7c170f06
MD5 2b0813a4efbc207ca3182c240f123d6f
BLAKE2b-256 06eec94e9d69debbd40155780c9161652d1e2c421ac5bfa4e1a2d635cc3e183d

See more details on using hashes here.

Provenance

The following attestation bundles were made for darwin_mgmt_nic_configurator-2.1.2-py3-none-any.whl:

Publisher: release.yml on Jesssullivan/DarwinNicUtil

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page