Skip to main content

High-speed network discovery and drift analysis engine

Project description

NetPulse Discovery Logo

NetPulse Discovery

Python Rust Build Status

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 libpcap and raw sockets in Rust to execute ARP and ICMP sweeps orders of magnitude faster than standard Python libraries.
  • Asynchronous Port Scanning: Native asyncio TCP 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

netpulse_discovery-0.1.5.tar.gz (23.2 kB view details)

Uploaded Source

Built Distributions

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

netpulse_discovery-0.1.5-cp38-abi3-win_amd64.whl (170.3 kB view details)

Uploaded CPython 3.8+Windows x86-64

netpulse_discovery-0.1.5-cp38-abi3-manylinux_2_34_x86_64.whl (314.2 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.34+ x86-64

netpulse_discovery-0.1.5-cp38-abi3-macosx_11_0_arm64.whl (276.3 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

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

Hashes for netpulse_discovery-0.1.5.tar.gz
Algorithm Hash digest
SHA256 6e6961757f2141fc42b0d59dda521f8d8bab8ba47465cc889fc0ccfa6499b230
MD5 8ada41d9831906feb2a0eab1d74572b4
BLAKE2b-256 15b35835d91461ec2c2f6c7533d4d186ee014ea1ebb8489c7fd9a01d96a5159c

See more details on using hashes here.

File details

Details for the file netpulse_discovery-0.1.5-cp38-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for netpulse_discovery-0.1.5-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 99bc4bc5375a4f77251145c23a91633abc6b2f38a22735904922184aa4e15a68
MD5 be8ed7a966c0e4c5d6634fccd2222662
BLAKE2b-256 bb2dd2f1ffee472b0fd3eb7d9e59223ddcda3dd0e07c62f86e25b60c2f7caa61

See more details on using hashes here.

File details

Details for the file netpulse_discovery-0.1.5-cp38-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for netpulse_discovery-0.1.5-cp38-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 75810e57ed739cdc2ea0085313ca9748d8cbdbb451f471d7a4947b8093df4674
MD5 ce9af8074854527dce6904e2df92f0e3
BLAKE2b-256 25a8d92cc048af28b46062ecc6dda167ab9333310a09873a70e47b25eef1a333

See more details on using hashes here.

File details

Details for the file netpulse_discovery-0.1.5-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for netpulse_discovery-0.1.5-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d464ef657453945d3c655a87f1d6e2fc341c5dffdde6c71a3aeb83e1a2dde25f
MD5 2cc1f0bcbfa609107c53c9a4b7da3967
BLAKE2b-256 057a6ba50876f3e3496f7d045c81c63c1aefb14454767a2ab2d9d0c1a927dfe0

See more details on using hashes here.

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