Read-only container, nothing shared
All capabilities dropped, non-root, no new privileges, a memory and CPU cap, and no host folders mounted. Input values are passed as arguments, never through a shell.
Free, public OSINT tool registry
Every tool is pinned, signed, scanned and smoke-tested before it is listed. ot runs it in a locked-down container on your own machine, and gives you results other tools can read.
$ ot run dheeraj/holehe-lite --email ada@example.com
✓ signed by github.com/dheeraj/holehe-lite · verified
✓ scans pass · 0 critical · smoke test ok
→ read-only container · no host files · no shell
github.com found
gitlab.com found
spotify.com found
twitter.com not found
✓ 4 sites in 1.8 s · results.json writtenGet started
The installer checks the SHA-256 and the release signature before anything runs. Then ot doctor tells you whether Docker, Podman and your keychain are ready.
Prefer a package? Every release ships deb, rpm and archives on GitHub Releases, and ot self-update keeps it current.
curl -fsSL https://get.otinstaller.com/ot | shChecks the SHA-256 and the release signature, then installs to /usr/local/bin or ~/.local/bin. Then run ot doctor.
irm https://get.otinstaller.com/ot.ps1 | iexInstalls to %LOCALAPPDATA%\Programs\ot and adds it to your PATH. Then run ot doctor.
brew install --cask otinstaller/tap/otFrom the otinstaller/homebrew-tap cask. Then run ot doctor.
scoop bucket add otinstaller https://github.com/otinstaller/scoop-bucket && scoop install otFrom the otinstaller/scoop-bucket bucket. Then run ot doctor.
go install github.com/otinstaller/otinstaller/cli/cmd/ot@latestBuilds from source with Go 1.25 or newer. Then run ot doctor.
ot doctor checks your machineot search username finds a toolot run ns/tool --username jane installs it once, then runs itStart from what you have
Opening soon
The registry is live and accepting releases. Browse back shortly, or be one of the first publishers: the import wizard turns a GitHub or GitLab repository into a listed, signed tool in minutes.
Trust, checked by machines and people
Images by digest, wheels by hash. A version can never point at different code later.
Signed by the repository's own CI with cosign keyless. ot checks the identity before every run.
Trivy for vulnerabilities and secrets, GuardDog for Python packages, and an SBOM.
Run once with its declared test input, offline, in the same sandbox you will use.
A person reviews every new publisher's first release against the acceptable-use rules.
When you run it
All capabilities dropped, non-root, no new privileges, a memory and CPU cap, and no host folders mounted. Input values are passed as arguments, never through a shell.
ot keys set NAME stores a key in the OS keychain and hands it to that one container only. Tools that need none are a search filter away.
Every run returns the same JSON result envelope, so output pivots into the next tool or an OSINTverse case. --format table when you just want to read it.
For tool authors
Point the wizard at a GitHub or GitLab repository. The registry detects what is in it, drafts otinstaller.yaml, and opens a pull request with a release workflow. Merge, tag v1.0.0, and your tool is scanned and live.
ot init or the import wizard writes the manifestInstall in seconds, run your first tool a minute later.
curl -fsSL https://get.otinstaller.com/ot | shWindows: irm https://get.otinstaller.com/ot.ps1 | iex · Getting started