No Account Needed Free & Open Source

Open Port
Change Detector.

Portwatch scans your servers for open ports, saves a baseline, and alerts you when something changes. New port opened? Service disappeared? You'll know immediately. Scan, diff, alert — on a cron or on demand.

$ curl -sSL https://install.hostatlas.app/portwatch | bash_
bash — server-01

$ portwatch scan --diff

Scanning localhost (1-65535)...

✓ Scan complete — 6 open ports

Port Service State

22 SSH (OpenSSH) open

80 HTTP (nginx) open

443 HTTPS (nginx) open

8080 HTTP (node) NEW ●

3306 MySQL CLOSED ●

6379 Redis open

⚠ 2 changes detected — alerts sent

What It Does

Scan. Diff. Alert.

Portwatch performs TCP port scans against your target hosts, stores the results as a baseline, and compares subsequent scans to detect changes. New ports, closed ports, and service changes are all reported.

radar

TCP Port Scanning

Fast SYN/connect scanning with configurable port ranges. Scan specific ports, common ports, or the full 1-65535 range.

difference

Baseline Diffing

First scan creates a baseline. Every subsequent scan is compared against it. See exactly which ports opened, closed, or changed services.

notifications

Change Alerts

Get notified via Slack, Telegram, Discord, or webhook when port changes are detected. Alert includes the full diff with old and new state.

schedule

Scheduled Scans

Run as a cron job or systemd timer for continuous monitoring. Portwatch handles the baseline management and diff logic automatically.

dns

Multi-Target

Scan multiple hosts from one config file. Define targets by IP address, hostname, or CIDR range. Each target maintains its own baseline.

code

Open Source

MIT licensed. Audit the code, contribute, or fork it. Built for transparency and community use.

Configuration

Define targets. Set alerts. Run.

One YAML config for all your targets. Define port ranges, scan intervals, and notification channels.

# /etc/portwatch/config.yml targets: - host: "web-prod-01.example.com" ports: "1-1024" - host: "db-primary.example.com" ports: "3306,5432,6379,27017" - host: "10.0.1.0/24" ports: "22,80,443" alerts: slack: webhook_url: "https://hooks.slack.com/..." discord: webhook_url: "https://discord.com/api/..."

Alert Format

See what changed. Instantly.

Change alerts include the target, the exact ports that changed, and the before/after state for each.

Port Change Detected Host: web-prod-01.example.com + 8080/tcp OPEN (new) + 9090/tcp OPEN (new) - 3306/tcp CLOSED (was open) Baseline: 2026-04-15 22:00 UTC Current: 2026-04-16 04:00 UTC Delta: +2 opened -1 closed

Install

One command. Scanning in seconds.

The installer downloads the binary, creates a default config, and optionally sets up a systemd timer for scheduled scanning.

$ curl -sSL https://install.hostatlas.app/portwatch | bash Detected platform: linux/amd64 Downloaded portwatch v1.0.0 Installed to /usr/local/bin/portwatch Created config: /etc/portwatch/config.yml Ready — run portwatch scan to create baseline

Continuous Monitoring

Static snapshots? HostAtlas monitors continuously.

Portwatch gives you periodic scan diffs. HostAtlas gives you continuous port and service monitoring with the agent running on every server — real-time status, alerting, and full infrastructure visibility without manual scanning.