Skip to main content

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

High-Performance Networking (Rust Core)

NetPulse operates at near wire-speed, utilizing a custom Rust core (_engine) layered with PyO3. It broadcasts custom Layer 2 ARP frames and Layer 3 ICMP Echo sweeps using raw datalink sockets. Features include OS Fingerprinting via TCP banners and TTL extraction, native Traceroutes, and Passive Topology Sniffing (CDP/LLDP).

Cloud Native & Developer Ecosystem

Ready for modern infrastructure! Spin up the API daemon with netpulse-discovery serve to instantly access a full REST API, a Strawberry GraphQL interface (/graphql) for complex topological querying, and a Prometheus Metrics exporter (/metrics) built right in. You can also inject real-time Python plugins directly into the discovery engine.

  • 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:

Metadata

Release files for netpulse-discovery 0.1.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for netpulse-discovery 0.1.8
File Size Uploaded Provenance Actions
netpulse_discovery-0.1.8.tar.gz 27.5 kB Without provenance Details for netpulse_discovery-0.1.8.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for netpulse-discovery 0.1.8
File Interpreter ABI Platform Actions
netpulse_discovery-0.1.8-cp38-abi3-win_amd64.whl CPython 3.8 abi3 Windows x86-64 Details for netpulse_discovery-0.1.8-cp38-abi3-win_amd64.whl
netpulse_discovery-0.1.8-cp38-abi3-manylinux_2_34_x86_64.whl CPython 3.8 abi3 Linux glibc 2.34+ x86-64 Details for netpulse_discovery-0.1.8-cp38-abi3-manylinux_2_34_x86_64.whl
netpulse_discovery-0.1.8-cp38-abi3-macosx_11_0_arm64.whl CPython 3.8 abi3 macOS 11.0+ ARM64 Details for netpulse_discovery-0.1.8-cp38-abi3-macosx_11_0_arm64.whl

Total release size: 831.9 kB

Release files / netpulse_discovery-0.1.8.tar.gz

Download URL netpulse_discovery-0.1.8.tar.gz
Size 27.5 kB
Tags Source
SHA-256 checksum
How to use checksums
f4bb09d74c4267cf9a6552b97091df33ed640138211d083d20cfbc737d0fa2a2
BLAKE2b-256 checksum
How to use checksums
8e40d7af094f2bda7d47e088a958ec212dca40601556265246f711c95cac0151
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / netpulse_discovery-0.1.8-cp38-abi3-win_amd64.whl

Download URL netpulse_discovery-0.1.8-cp38-abi3-win_amd64.whl
Size 184.0 kB
Tags CPython 3.8 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
a80862c92a718fadf4899af370eec417425f6d407225d5b5e0f6f295b067e34e
BLAKE2b-256 checksum
How to use checksums
aef50cdce7dc2fe88125149398b1a9ab15e1771dd805ec7a1531ef91e889bbd7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / netpulse_discovery-0.1.8-cp38-abi3-manylinux_2_34_x86_64.whl

Download URL netpulse_discovery-0.1.8-cp38-abi3-manylinux_2_34_x86_64.whl
Size 330.0 kB
Tags CPython 3.8 Linux glibc 2.34+ x86-64 abi3
SHA-256 checksum
How to use checksums
b1fd3bca130fe38ba3d2e6dcd7e0dfc44af1fea0f186f0bd48d9b81d071b0b5c
BLAKE2b-256 checksum
How to use checksums
0c755ef2db974495ea45b6241fff3d8fbff1a103200e116d41245accb04c0bbf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / netpulse_discovery-0.1.8-cp38-abi3-macosx_11_0_arm64.whl

Download URL netpulse_discovery-0.1.8-cp38-abi3-macosx_11_0_arm64.whl
Size 290.4 kB
Tags CPython 3.8 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4968f07db06dbbbbae1777b853f508b4ff2f30ded9f5e3c683e820059f0d14e0
BLAKE2b-256 checksum
How to use checksums
8a885c5c1760ec69734699f5805ebf16336a4f4c2788e152a4b3f4ecae775ff6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Security for netpulse-discovery 0.1.8

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page