Publish your first tool

Verified publisher

Package a command-line OSINT tool and publish it to the OTInstaller Registry in about 20 minutes

beginner1 toollicence CC-BY-4.0
Contents 3/4
  1. 1 Publish your first tool
  2. 2 Write the manifest
  3. 3 Test it locally
  4. 4 Release
Tools (1)

Tools used in this guide

  • username-permutations Generates likely usernames from a person's name to search with username toolsot install osintverse-community/username-permutations

Test it locally

Validate

ot validate

This checks the manifest exactly as the registry will: required fields, names, the command's placeholders against your inputs, the files it names, and that test.input covers every required input. Each problem comes with an error code and a hint.

Try the image in the same sandbox

Before your first release there is no published image yet, so build it yourself and run it the way ot will: as an unprivileged user, on a read-only file system, without capabilities, and with no network unless network.egress is true.

docker build -t username-permutations-test .
docker run --rm --read-only --tmpfs /tmp --cap-drop ALL --user 65534:65534 --network none \
  username-permutations-test "Ada Lovelace"

Common problems:

Problem Fix
The tool writes files and fails on a read-only file system Write to /tmp, or print to standard output
It works as root and fails as a normal user Don't depend on root; ot always runs tools as an unprivileged user
It needs the internet but egress is false Set network.egress: true and, if you can, list the domains it contacts
The output isn't parsed Print one JSON document (or one per line with jsonl) and nothing else on standard output; logs go to standard error

The smoke test

ot validate --smoke

This installs the package exactly as the manifest describes it (pulling the pinned image, or the pinned wheel from PyPI) and runs test.input, as the registry's scanner does. Use it on a pipx tool at any time, and on a Docker tool once the release workflow has pinned a real image digest. You can also run a local manifest like a published package:

ot run . --name "Ada Lovelace" --format table

Next: release.

Published 20 Oct 2026. Read it in a terminal: ot guide read osintverse-community/publish-your-first-tool; offline: ot guide get osintverse-community/publish-your-first-tool · Source · Markdown

Esc

Try

↑ ↓ to move↵ to open