High-speed network discovery and drift analysis engine
Project description
NetPulse Discovery
NetPulse Discovery is a high-performance, asynchronous network mapping and drift-analysis engine. By offloading packet-level networking to a compiled Rust core, it achieves near wire-speed execution while maintaining a flexible, developer-friendly Python API.
🚀 Key Features
- Blazing Fast Scans: Leverages
libpcapand raw sockets in Rust to execute ARP and ICMP sweeps orders of magnitude faster than standard Python libraries. - Asynchronous Port Scanning: Native
asyncioTCP connect scanner that can check hundreds of ports across multiple devices concurrently. - Drift Detection: Built-in intelligence to compare historical scans and calculate exact topological drift (e.g., "Host 192.168.1.5 went offline").
- MAC Vendor Resolution: Automatically translates hardware MAC addresses into human-readable manufacturer names.
- Standalone API & CLI: Usable as a Python library, a Typer-powered CLI, or a FastAPI REST microservice.
📦 Installation
NetPulse Discovery is distributed as a pre-compiled binary wheel. It is entirely self-sufficient and requires no Rust compiler or external dependencies to install!
pip install netpulse-discovery
⚡ Quickstart
As a CLI Tool
The standalone CLI returns structured JSON output perfect for piping into jq or other tools. You can also export directly to files!
[!IMPORTANT] Multiplatform Execution: Low-level network scanning requires elevated privileges.
- Linux / macOS: Prefix your commands with
sudo- Windows: Open an Administrator Command Prompt or PowerShell session to execute.
# Scan a network
sudo netpulse-discovery scan 192.168.1.0/24 --timeout 500
# Export results directly to a file
sudo netpulse-discovery scan 192.168.1.0/24 --output results.json
sudo netpulse-discovery scan 192.168.1.0/24 --output results.yaml
sudo netpulse-discovery scan 192.168.1.0/24 --output results.txt
# Calculate Network Drift from two exported JSON files (No sudo required)
netpulse-discovery drift old_results.json results.json --output drift_report.yaml
# Run Continuous Daemon Mode with Webhook Alerting
sudo netpulse-discovery watch 192.168.1.0/24 --interval 300 --webhook https://hooks.slack.com/services/T000/B000/XXX
# Generate an Ansible Infrastructure-as-Code Inventory from a live scan
sudo netpulse-discovery generate-inventory 192.168.1.0/24 --format ansible --output hosts.yaml
As a Standalone REST API
You can spin up a dedicated, hyper-fast FastAPI server instantly:
netpulse-discovery serve --port 8000
Then send requests to http://localhost:8000/discovery/scan or http://localhost:8000/discovery/drift/compare.
As a Python Library
Embed the high-performance engine directly into your own applications:
import asyncio
from netpulse.discovery.services.discovery import DiscoveryService
from netpulse.discovery.models.discovery import DiscoveryMethod
async def main():
service = DiscoveryService()
# Scans the network using ARP resolution
result = await service.discover_network(
"10.0.0.0/24",
methods=[DiscoveryMethod.ARP]
)
for device in result.devices:
print(f"[{device.ip}] {device.mac} - {device.vendor}")
asyncio.run(main())
📚 Documentation
For more detailed guides, check out the docs/ folder:
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
Built Distributions
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 netpulse_discovery-0.1.5.tar.gz.
File metadata
- Download URL: netpulse_discovery-0.1.5.tar.gz
- Upload date:
- Size: 23.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e6961757f2141fc42b0d59dda521f8d8bab8ba47465cc889fc0ccfa6499b230
|
|
| MD5 |
8ada41d9831906feb2a0eab1d74572b4
|
|
| BLAKE2b-256 |
15b35835d91461ec2c2f6c7533d4d186ee014ea1ebb8489c7fd9a01d96a5159c
|
File details
Details for the file netpulse_discovery-0.1.5-cp38-abi3-win_amd64.whl.
File metadata
- Download URL: netpulse_discovery-0.1.5-cp38-abi3-win_amd64.whl
- Upload date:
- Size: 170.3 kB
- Tags: CPython 3.8+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99bc4bc5375a4f77251145c23a91633abc6b2f38a22735904922184aa4e15a68
|
|
| MD5 |
be8ed7a966c0e4c5d6634fccd2222662
|
|
| BLAKE2b-256 |
bb2dd2f1ffee472b0fd3eb7d9e59223ddcda3dd0e07c62f86e25b60c2f7caa61
|
File details
Details for the file netpulse_discovery-0.1.5-cp38-abi3-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: netpulse_discovery-0.1.5-cp38-abi3-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 314.2 kB
- Tags: CPython 3.8+, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75810e57ed739cdc2ea0085313ca9748d8cbdbb451f471d7a4947b8093df4674
|
|
| MD5 |
ce9af8074854527dce6904e2df92f0e3
|
|
| BLAKE2b-256 |
25a8d92cc048af28b46062ecc6dda167ab9333310a09873a70e47b25eef1a333
|
File details
Details for the file netpulse_discovery-0.1.5-cp38-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: netpulse_discovery-0.1.5-cp38-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 276.3 kB
- Tags: CPython 3.8+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d464ef657453945d3c655a87f1d6e2fc341c5dffdde6c71a3aeb83e1a2dde25f
|
|
| MD5 |
2cc1f0bcbfa609107c53c9a4b7da3967
|
|
| BLAKE2b-256 |
057a6ba50876f3e3496f7d045c81c63c1aefb14454767a2ab2d9d0c1a927dfe0
|