DOCSIS 3.x/4.0 Proactive Network Maintenance Toolkit
Project description
PyPNM - Proactive Network Maintenance Toolkit
PyPNM is a DOCSIS 3.x/4.0 Proactive Network Maintenance toolkit for engineers who want repeatable, scriptable visibility into modem health. It can run purely as a Python library or as a FastAPI web service for real-time dashboards and offline analysis workflows.
Table of contents
- Choose your path
- Kubernetes | Docker
- Key Features
- Prerequisites
- Getting Started
- Documentation
- Gallery
- SNMP Notes
- CableLabs Specifications & MIBs
- PNM Architecture & Guidance
- License
- Maintainer
Choose your path
| Path | Description |
|---|---|
| Kubernetes deploy (kind) | Run PyPNM in a local kind cluster (GHCR image). |
| Docker deploy | Install and run the containerized PyPNM service. |
| Use PyPNM as a library | Install pypnm-docsis into an existing Python environment. |
| Run the full platform | Clone the repo and use the full FastAPI + tooling stack. |
Kubernetes | Docker
Docker (Recommended) - Install Docker | Install PyPNM Container | Commands
Fast install (helper script; latest release auto-detected):
TAG="v1.0.39.0"
PORT=8080
curl -fsSLo install-pypnm-docker-container.sh \
https://raw.githubusercontent.com/PyPNMApps/PyPNM/main/scripts/install-pypnm-docker-container.sh
chmod +x install-pypnm-docker-container.sh
sudo ./install-pypnm-docker-container.sh --tag ${TAG} --port ${PORT}
If Docker isn’t on your host yet, follow the Install Docker prerequisites guide first.
More Docker options and compose workflows: PyPNM Docker Installation and Developer Workflow.
Kubernetes (kind) dev clusters
Kubernetes quick links:
We continuously test the manifests with a kind-based CI smoke test (Kubernetes (kind) badge above). Follow the kind quickstart or the detailed deployment guide to run PyPNM inside a local single-node cluster; multi-node scenarios are not covered yet (see pros/cons).
Script-only deployment (no repo clone) is documented in PyPNM deploy.
Prerequisites
Operating systems
Linux, validated on:
- Ubuntu 22.04 LTS
- Ubuntu 24.04 LTS
Other modern Linux distributions may work but are not yet part of the test matrix.
Shell dependencies
From a fresh system, install Git:
sudo apt update
sudo apt install -y git
Python and remaining dependencies are handled by the installer.
Getting started
Install from PyPI (library only)
If you only need the library, install from PyPI:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install pypnm-docsis
Uninstall and cleanup:
pip uninstall pypnm-docsis
rm -f ~/.ssh/pypnm_secrets.key
FastAPI Service and Development
1) Clone
git clone https://github.com/PyPNMApps/PyPNM.git
cd PyPNM
2) Install
Run the installer:
./install.sh
Common flags (use as needed):
| Flag | Purpose |
|---|---|
--development |
Installs Docker Engine + kind/kubectl. See Development Install. |
--clean |
Removes prior install artifacts (venv/build/dist/cache) before installing. Preserves data and system configuration. |
--purge-cache |
Clears pip cache after activating the venv (use with --clean when troubleshooting stale installs). |
--pnm-file-retrieval-setup |
Launches tools/pnm/pnm_file_retrieval_setup.py after install. See the PNM File Retrieval Overview. |
--demo-mode |
Seeds demo data/paths for offline exploration. See the demo mode guide. |
--production |
Reverts demo-mode changes and restores your previous system.json backup. |
Installer extras: adds shell aliases when available; source your rc file once to pick them up.
3) Activate the virtual environment
If you used the installer defaults, activate the .env environment:
source .env/bin/activate
4) Configure system settings
System configuration lives in deploy/docker/config/system.json.
- Config menu:
source ~/.bashrc && config-menu - System Configuration Reference: field-by-field descriptions and defaults
If you installed with
--pnm-file-retrieval-setup, it runs automatically and backs upsystem.jsonfirst.
5) Run the FastAPI service launcher
HTTP (default: http://127.0.0.1:8000):
pypnm
Development hot-reload:
pypnm --reload
6) (Optional) Serve the documentation
HTTP (default: http://127.0.0.1:8001):
mkdocs serve
7) Explore the API
Installed services and docs are available at the following URLs:
| Git Clone | Docker |
|---|---|
| FastAPI Swagger UI | FastAPI Swagger UI |
| FastAPI ReDoc | FastAPI ReDoc |
| MkDocs docs | MkDocs docs |
Recommendations
Postman is a great tool for testing the FastAPI endpoints:
Documentation
- Docs hub - task-based entry point (install, configure, operate, contribute).
- FastAPI reference - Endpoint details and request/response schemas.
- Python API reference - Importable helpers and data models.
SNMP notes
- SNMPv2c is supported
- SNMPv3 is currently stubbed and not yet supported
CableLabs specifications & MIBs
PNM architecture & guidance
License
Next steps
- Review PNM topology options to decide how captures will move through your network.
- Follow the System Configuration guide to tailor
system.jsonfor your lab. - Explore system tools and operational scripts for day-to-day automation.
Maintainer
Maurice Garcia
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pypnm_docsis-1.0.39.0.tar.gz.
File metadata
- Download URL: pypnm_docsis-1.0.39.0.tar.gz
- Upload date:
- Size: 1.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba79a20bc464d98cd6841284603cddd52869b4eeed992df923a668cf1af33279
|
|
| MD5 |
dbc3a44afdbd92a47b615dd4fd2abf3a
|
|
| BLAKE2b-256 |
b5f5774c26e64586dfae705d7957ec02723e08e371c7058abe0ac5faa8a1cfde
|
File details
Details for the file pypnm_docsis-1.0.39.0-py3-none-any.whl.
File metadata
- Download URL: pypnm_docsis-1.0.39.0-py3-none-any.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c1dfa7edeadfdbd3734a1aea2645c15108700bdf4017c3a29d24f93a2bad3ba9
|
|
| MD5 |
a46616e8332b8c5741f817f5f53f16e1
|
|
| BLAKE2b-256 |
9867dd697388cd4f56909dafd02beefa16f8fc9df8077c2d95a0243c75a82be3
|