Repository navigation
Getting Started
- Linux or Ubuntu WSL.
- Python 3.11 or newer. CI covers Python 3.11, 3.12, and 3.13.
- uv and Git.
Dependency installation can require internet access. Watchpost itself runs offline and does not require Nmap, an account, or an API key.
To use Watchpost with your own saved scans, install the published package into a virtual environment:
python3 -m venv .venv && .venv/bin/python -m pip install 'watchpost-cli==0.0.1'
The PyPI package is named watchpost-cli. The package named watchpost belongs to an unrelated project.
The installed command is .venv/bin/watchpost. Only Python is required for this method.
The package does not include the synthetic example files, so the demo below uses the repository.
git clone https://github.com/ejames-dev/watchpost.git
cd watchpost
uv sync --locked --dev --python 3.11For an existing checkout, enter its root directory and run the sync command.
The --dev option also installs the test and lint tools.
uv run --offline watchpost inspect examples/baseline.xmlThe command lists explicit IPv4 addresses and TCP port states in numerical order. It does not expand grouped port counts into individual observations. All bundled addresses and states are fictional.
uv run --offline watchpost compare examples/baseline.xml examples/after.xml \
--confirm-same-contextExpected finding:
STATE CHANGE 192.0.2.10 3000/tcp: closed -> open
The flag records your confirmation of matching scan context. For real inputs, confirm the location, intended targets, and remaining settings before you use it. The flag does not override failed validation.
mkdir -p reports
uv run --offline watchpost compare examples/baseline.xml examples/after.xml \
--confirm-same-context --output reports/wiki-demo.mdOpen reports/wiki-demo.md in a text editor or Markdown viewer.
If the file already exists, choose a new filename. There is no force-overwrite option.
Compare the result with the synthetic sample report. The supplied input paths and contents determine the report content, not the output filename.
uv run --offline python -m unittest discover -s tests -vContinue with Reading reports. For the full command reference, see the README.