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

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:

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.8.tar.gz (27.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.8-cp38-abi3-win_amd64.whl (184.0 kB view details)

Uploaded CPython 3.8+Windows x86-64

netpulse_discovery-0.1.8-cp38-abi3-manylinux_2_34_x86_64.whl (330.0 kB view details)

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

netpulse_discovery-0.1.8-cp38-abi3-macosx_11_0_arm64.whl (290.4 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: netpulse_discovery-0.1.8.tar.gz
  • Upload date:
  • Size: 27.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.8.tar.gz
Algorithm Hash digest
SHA256 f4bb09d74c4267cf9a6552b97091df33ed640138211d083d20cfbc737d0fa2a2
MD5 c0b39a0ab076f8706a2591da9e9a5433
BLAKE2b-256 8e40d7af094f2bda7d47e088a958ec212dca40601556265246f711c95cac0151

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for netpulse_discovery-0.1.8-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 a80862c92a718fadf4899af370eec417425f6d407225d5b5e0f6f295b067e34e
MD5 f5b295d3e0abe9a0690b13c7c7220983
BLAKE2b-256 aef50cdce7dc2fe88125149398b1a9ab15e1771dd805ec7a1531ef91e889bbd7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for netpulse_discovery-0.1.8-cp38-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 b1fd3bca130fe38ba3d2e6dcd7e0dfc44af1fea0f186f0bd48d9b81d071b0b5c
MD5 35e70caddaf9a86dc2fe3520da687ff9
BLAKE2b-256 0c755ef2db974495ea45b6241fff3d8fbff1a103200e116d41245accb04c0bbf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for netpulse_discovery-0.1.8-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4968f07db06dbbbbae1777b853f508b4ff2f30ded9f5e3c683e820059f0d14e0
MD5 515fd5f823028fe2b90ecc3c518827c8
BLAKE2b-256 8a885c5c1760ec69734699f5805ebf16336a4f4c2788e152a4b3f4ecae775ff6

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