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

Since NetPulse Discovery is part of the NetPulse workspace, it relies on uv for dependency management and workspace resolution.

uv sync

⚡ Quickstart

As a CLI Tool

The standalone CLI returns structured JSON output perfect for piping into jq or other tools.

# Note: Raw sockets require elevated privileges
sudo uv run netpulse-discovery scan 192.168.1.0/24 --timeout 500

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.0.tar.gz (554.1 kB view details)

Uploaded Source

Built Distribution

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

netpulse_discovery-0.1.0-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: netpulse_discovery-0.1.0.tar.gz
  • Upload date:
  • Size: 554.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for netpulse_discovery-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d78756f04a2416684ae8019f24d37fff59f1743f5bef1ec9eea1df3a22886131
MD5 2847cad605d8e3e5f20b88f4913d43e7
BLAKE2b-256 e8b3c9e0f9b04e9a73791c9ebad57740d983613d14c605e6f72bf510e8df2270

See more details on using hashes here.

File details

Details for the file netpulse_discovery-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: netpulse_discovery-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for netpulse_discovery-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0cdebb21fe01771b8de50852aaa94d4a447b1618cb0a8228cd29d00480a53a33
MD5 ac6e01be319a1b2931c8c37527509df3
BLAKE2b-256 a5928dd43e5e7e62f93928d2b8ce4d92e8c105b936ca168967a56b7abf58864b

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