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.6.tar.gz (25.5 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.6-cp38-abi3-win_amd64.whl (181.6 kB view details)

Uploaded CPython 3.8+Windows x86-64

netpulse_discovery-0.1.6-cp38-abi3-manylinux_2_34_x86_64.whl (327.5 kB view details)

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

netpulse_discovery-0.1.6-cp38-abi3-macosx_11_0_arm64.whl (288.0 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

File details

Details for the file netpulse_discovery-0.1.6.tar.gz.

File metadata

  • Download URL: netpulse_discovery-0.1.6.tar.gz
  • Upload date:
  • Size: 25.5 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.6.tar.gz
Algorithm Hash digest
SHA256 e5f5ff5776d5a67866ae8c12c0582b2bf8ec10e515fb3bf0a280b58fa3827ba8
MD5 19ece7a3510a6baf7ac132c2b065509f
BLAKE2b-256 3f7d4e67ef897229ab15f074d14f8d6f250d2ef6ed07b50220d627b2ac9e1f7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for netpulse_discovery-0.1.6-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 9ba683befb8705b24edbe49d484dde381a4140802dd0e7eb97d338be370e161a
MD5 8c569c3a2a2a7d5694cd1312025ad6d6
BLAKE2b-256 f930ac57a72509849961e677d803c1c44aa408f18642c2831411bc5cf6e22407

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for netpulse_discovery-0.1.6-cp38-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 11eb95e957ecbb33643ed40eebd5aa6c416218ce51182b8f9a55a2663ad4fc62
MD5 96209dc005ebf47b4748ef727aed7d3a
BLAKE2b-256 cd76ab376d023e60eb933f023a98d5dcf0be55744c4231ea9e94eb05f601a6f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for netpulse_discovery-0.1.6-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e04bed8a28f3339f9deff141510abc8deba89e2c22edf74226c63d18a431d36e
MD5 d72fcbcaedd8c8f0c33bbfdda60c1ad2
BLAKE2b-256 cb3f867facf9b5389f84532f2125766f7baed4264b497816bba896528195ca6a

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