napalm-amt
NAPALM driver for Intel Active Management Technology (AMT), the management controller built into Intel vPro business desktops, mini PCs and notebooks, over DMTF WS-Management. Built on napalm-device-types. Written for netOrk.
Status: early development. One driver, amt (napalm_amt.AmtDriver), a
ManagementControllerDriver from napalm-device-types like the server BMC drivers in
napalm-redfish. It reads the machine's
identity, hardware, firmware, power state and event log, reports what AMT listens on, and
switches the machine's power. It is tested against Intel's published recordings of an
AMT 12 (NUC9). Recordings of the first real test devices, two Lenovo ThinkCentre M910x
(AMT 11.x), are still to come.
Why a driver of its own
AMT does the job of a server BMC (power control and inventory while the operating system is down or the machine is off), but speaks a different protocol: no Redfish and no IPMI, only WS-Management (SOAP, CIM classes) on port 16992, or 16993 with TLS. It shares nothing with napalm-redfish beyond the role, so it lives here.
Layout
| Entry point | Transport | Scope |
|---|---|---|
amt |
WS-Management over HTTP (16992) or HTTPS (16993), HTTP Digest auth | Read, plus power control; no reset of AMT itself |
optional_args: port (16992; 16993 means TLS), tls (overrides what the port
implies), verify_ssl (True, a CA file path, or False), retries (1).
The WS-Management client in napalm_amt/wsman.py is self-contained (requests, and
defusedxml to parse the answers). Neither pywsman (a C binding) nor python-amt (unmaintained, power only)
is used.
What AMT knows, and what it does not
AMT reads the machine's SMBIOS: manufacturer, model, serial number, system UUID, CPUs,
DIMMs, drives (sizes only), BIOS version. It has no temperature, fan or power-supply
readings on client platforms, no core counts, and no drive models. Where it knows nothing,
the driver says so (None, empty) and does not guess. See docs/amt-map.md.
AMT shares the machine's network controller. In DHCP mode it also uses the operating system's IP address. netOrk keeps one device per address, so give AMT a static IP address of its own in the MEBx (docs/lenovo-m910x.md).
Documents
- docs/amt-map.md: getters mapped to WS-Management classes
- docs/security.md: plain HTTP vs TLS, accounts, KVM, known CVEs
- docs/lenovo-m910x.md: first test devices, MEBx setup, what to verify
- docs/testing.md: fixtures, recording a real AMT
- docs/references.md
Development
The rules are in STANDARDS.md.
python -m venv .venv
.venv/bin/pip install -e '.[dev]'
.venv/bin/pytest --cov
.venv/bin/ruff format --check . && .venv/bin/ruff check . && .venv/bin/mypy napalm_amt
Conventions
These follow the other drivers in the NAPALM organisation:
- Role bases declare, they never implement. Generic logic goes into napalm-device-types, vendor mechanics stay here.
- Parsing lives in pure functions (
napalm_amt/parsers/), tested on recorded responses undertests/fixtures/<source>/, with aCOMMANDS.txtlisting the request behind each file.
Metadata
Release files for napalm-amt 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| napalm_amt-0.2.0.tar.gz | 34.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| napalm_amt-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 64.4 kB
Release files / napalm_amt-0.2.0.tar.gz
| Download URL | napalm_amt-0.2.0.tar.gz |
|---|---|
| Size | 34.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
36593f38cb8d16b6428966db7e21f6893552798b8e14eba22dcfd49e5870bdf8
|
|
BLAKE2b-256 checksum How to use checksums |
2d8895aa08281529f476d61e01db1080e5db83fb906d080c05e93b981bf95a22
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / napalm_amt-0.2.0-py3-none-any.whl
| Download URL | napalm_amt-0.2.0-py3-none-any.whl |
|---|---|
| Size | 30.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
598efbcdf5954afa55f56920cdd85387ddb06860b62e068502d4ab98bc50e487
|
|
BLAKE2b-256 checksum How to use checksums |
f1b16800929c200a44448d2865b86653cd021328cc10bf98259f389988b999a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Security for napalm-amt 0.2.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.