Skip to content


Onionprobe development guidelines and workflow are listed here.

Release procedure

Release cycle workflow.

Version update

Set the version number:


Update the version in some files, like:

dch -i # debian/changelog
$EDITOR packages/onionprobe/
$EDITOR docker-compose.yml
$EDITOR setup.cfg

Regenerate the manpage

make manpage

Register the changes

Update the ChangeLog:

$EDITOR ChangeLog

Commit and tag:

git diff # review
git commit -a -m "Feat: Onionprobe $ONIONPROBE_VERSION"

Push changes and tags. Example:

git push origin        && git push upstream
git push origin --tags && git push upstream --tags

Once a tag is pushed, a GitLab release is created.

Build packages

Build and then upload the Python package in the Test PyPi instance:

make build-python-package
make upload-python-test-package

Try the test package in a fresh virtual machine, eg:

sudo apt-get install -y python3-pip tor
pip install -i \
            --extra-index-url \
            --break-system-packages \

Make sure to test after installation. If the the package works as expected, upload it to PyPi:

make upload-python-package


Announce the new release:

  • Post a message to the Tor Forum.
  • Send a message to the tor-announce mailing list ONLY in special cases, like important security issues.


Subject: [RELEASE] Onionprobe [security] release $ONIONPROBE_VERSION


We just released Onionprobe $ONIONPROBE_VERSION, a tool for testing and
monitoring the status of Onion Services:

[This release fixes a security issue. Please upgrade as soon as possible!]

[This release requires a database migration for those using the monitoring node:]

# ChangeLog