A high-performance async network diagnostics tool that checks DNS β TCP β TLS β HTTP chains with comprehensive analysis, multiple output formats, and actionable insights.
- Async Architecture β Concurrent checks with configurable workers
- Multiple Output Formats β Terminal, JSON, CSV, HTML, Markdown, YAML
- IPv6 Support β Full IPv4/IPv6 dual-stack support
- Benchmark Mode β Run multiple iterations and get statistics
- Comparison Mode β Compare multiple targets side-by-side
- Deep Analysis β TLS certificate details, security headers, HTTP/2 detection
- Configuration Files β Save and load settings
- Retry Logic β Automatic retries with exponential backoff
# Install
pip install pulse-network-diagnostics
# Basic check
pulse google.com
# Multiple targets with comparison
pulse google.com cloudflare.com github.com --compare
# JSON output for automation
pulse google.com --format json
# Benchmark mode (10 iterations)
pulse google.com --benchmark
# Deep analysis with all checks
pulse api.example.com --deep --checks dns,tcp,tls,httpββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π pulse β Network Diagnostics β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Target: google.com
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Results β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βΈ β DNS 12 ms Β» β 142.250.180.14 (IPv4) +1 more
βΈ β TCP 45 ms Β» Connected (fast)
βΈ β TLS 165 ms Β» β TLSv1.3 β’ TLS_AES_256_GCM_SHA384
βΈ β HTTP 198 ms Β» β GET / β 301 β https://www.google.com/
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β¨ All Systems Healthy β¨ β
β Total time: 420 ms β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[
{
"target": "google.com",
"address": "google.com:443",
"checks": [
{
"name": "DNS",
"duration_ms": 12.34,
"status": "success",
"details": "β 142.250.180.14 (IPv4) +1 more",
"metadata": {
"ips": ["142.250.180.14", "2a00:1450::200e"],
"ipv4_count": 1,
"ipv6_count": 1
}
}
],
"total_duration_ms": 420.5,
"is_healthy": true
}
]pip install pulse-network-diagnosticsgit clone https://github.com/vazor-code/pulse.git
cd pulse
pip install -e .pip install -e ".[dev]"
pip install -r requirements-dev.txt# Download and run directly
wget https://raw.githubusercontent.com/vazor-code/pulse/main/pulse.py
python pulse.py api.github.com# Check a single host
pulse example.com
# Check specific port
pulse example.com:8080
# Check with URL
pulse https://api.github.com
# Check multiple targets
pulse google.com github.com cloudflare.com# Terminal (default, with colors)
pulse google.com
# JSON
pulse google.com --format json
# CSV
pulse google.com --format csv -o results.csv
# HTML report
pulse google.com --format html -o report.html
# Markdown
pulse google.com --format markdown
# YAML
pulse google.com --format yaml# Deep analysis (certificate info, security headers)
pulse google.com --deep
# IPv6 preference
pulse google.com --ipv6
# HTTP/2 support check
pulse google.com --http2
# Custom timeout and retries
pulse google.com --timeout 30 --retries 3
# Concurrent workers
pulse target1.com target2.com target3.com --workers 5
# Quiet mode (errors only)
pulse google.com --quiet
# No colors
pulse google.com --no-color
# Verbose output
pulse google.com -v
pulse google.com -vv # Debug level# Run 10 iterations
pulse google.com --benchmark
# With verbose output
pulse google.com --benchmark -v# Compare multiple targets side-by-side
pulse google.com cloudflare.com github.com --compare# Save current options
pulse google.com --deep --timeout 30 --save-config myconfig.json
# Load configuration
pulse google.com --config myconfig.json# Create targets.txt with one target per line
echo "google.com
cloudflare.com
github.com" > targets.txt
# Check all targets
pulse -f targets.txt --comparepulse/
βββ pulse/
β βββ __init__.py # Main CLI entry point
β βββ __main__.py # Module execution
β βββ core/ # Core components
β β βββ config.py # Configuration management
β β βββ engine.py # Async check engine
β β βββ target.py # Target parsing
β β βββ result.py # Result data classes
β βββ checks/ # Check implementations
β β βββ dns.py # DNS resolution
β β βββ tcp.py # TCP connectivity
β β βββ tls.py # TLS/SSL handshake
β β βββ http.py # HTTP/HTTPS requests
β βββ output/ # Output formatters
β β βββ formatters.py # Main formatter dispatcher
β β βββ terminal.py # Terminal output with colors
β βββ utils/ # Utilities
β βββ logger.py # Logging utilities
βββ tests/ # Test suite
βββ docs/ # Documentation
# Run all tests
pytest
# Run with coverage
pytest --cov=pulse
# Run specific test file
pytest tests/test_pulse.py
# Run with verbose output
pytest -vusage: pulse [-h] [--from-file] [--compare] [--deep] [--checks CHECKS]
[--timeout TIMEOUT] [--retries RETRIES] [--ipv6] [--http2]
[--follow-redirects]
[--format {terminal,json,csv,html,markdown,yaml}]
[--output OUTPUT] [--quiet] [--no-color] [--verbose]
[--workers WORKERS] [--benchmark] [--config CONFIG]
[--save-config SAVE_CONFIG] [--version]
[targets ...]
positional arguments:
targets Host[:port], URL, or path to file with targets
options:
-h, --help show this help message and exit
--from-file, -f Read targets from file (one per line)
--compare, -c Compare multiple targets side by side
--deep, -d Enable deep analysis (TLS analysis, anomaly detection)
--checks CHECKS Comma-separated list of checks (default: dns,tcp,tls,http)
--timeout TIMEOUT, -t TIMEOUT
Timeout per check in seconds (default: 10)
--retries RETRIES, -r RETRIES
Number of retries for failed checks (default: 1)
--ipv6 Prefer IPv6 over IPv4
--http2 Check HTTP/2 support
--follow-redirects Follow HTTP redirects (default: True)
--format {terminal,json,csv,html,markdown,yaml}, -o {terminal,json,csv,html,markdown,yaml}
Output format (default: terminal)
--output OUTPUT, -O OUTPUT
Output file path (default: stdout)
--quiet, -q Suppress non-error output
--no-color Disable colored output
--verbose, -v Increase verbosity (use -vv for debug)
--workers WORKERS, -w WORKERS
Number of concurrent workers (default: 10)
--benchmark, -b Run benchmark mode (10 iterations)
--config CONFIG Path to configuration file
--save-config SAVE_CONFIG
Save current options to configuration file
--version show program's version number and exit
0β All healthy (all checks passed)1β Warnings detected (performance issues)2β Failures detected (connection errors)130β Interrupted by user (Ctrl+C)
β DNS Resolution Failed
β Run: nslookup <host>
β Try: nslookup <host> 8.8.8.8
β Check: /etc/resolv.conf or DNS settings
β TCP Connection Failed
β Service not listening on port
β Check firewall rules
β Run: netstat -an | grep <port>
β TLS Handshake Failed
β Certificate issue or service down
β Run: openssl s_client -connect <host>:<port>
β Check certificate expiration
β HTTP Request Failed
β Application may be offline
β Check service logs
β Verify URL path
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
pytest) - Commit your changes (
git commit -m 'feat: Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
# Clone and setup
git clone https://github.com/vazor-code/pulse.git
cd pulse
pip install -e ".[dev]"
# Run tests
pytest
# Code formatting
black pulse tests
isort pulse tests
# Type checking
mypy pulse
# Linting
flake8 pulse testsThis project is licensed under the GPL-3.0 License β see the LICENSE file for details.
- Inspired by the need for simple, fast network diagnostics
- Built with Python's excellent asyncio and ssl modules
- Thanks to all contributors!
Made with β€οΈ by the pulse team