otlite · Username
Install Zen on Linux or macOS in one command
Zen pulls author email addresses out of public commits for a GitHub user, repository, or organisation. It returns username and email pairs, and many of them are GitHub noreply addresses rather than real inboxes.
Zen in three lines
pipx install otlite
otlite install zen
otlite run zen -- u:jane_doeRuns s0md3v/Zen (Apache-2.0, ★ 603, otlite 1.2.1, catalog updated Oct 23, 2026). otlite installs and runs it at a tested version; it does not change or verify the tool itself.
What Zen is for
- Finding the commit email behind a developer's GitHub handle.
- Listing contributor addresses for a repository (url:https://github.com/owner/repo).
- Organisation-wide sweeps with the original --org flag.
Typed inputs for Zen
otlite translates these prefixes into Zen's own flags. Anything else after -- is passed through unchanged, so every original flag still works.
- u:
- Username ·
otlite run zen -- u:jane_doe - url:
- URL ·
otlite run zen -- url:https://example.com
Run every installed tool that takes the same input at once: otlite run --all u:jane_doe
Where the results go
Every run lands under ./results/zen/<target>/ as a timestamped output file, a .meta.json sidecar (the exact command, start and end time, exit code, and the SHA-256 of the output), and a .envelope.json with the entities found, in the same shape for every tool. List runs with otlite results, group them with --case, compare the last two with otlite diff zen <target>, and pull indicators out with otlite extract zen.
Before you run it
- Unauthenticated GitHub API calls are capped at 60 an hour, which a large organisation or busy repository uses up quickly.
- Upstream has not changed since 2019. It only reads GitHub's public API, so nothing reaches the person or their own sites.
Update, remove, inspect
otlite info zen # inputs, keys, an example command
otlite example zen # sample output, where there is one
otlite update zen # move to the next tested version
otlite remove zen # delete its virtualenvFull reference: the otlite docs, and the tool's own README on GitHub.
Pairs with
When open-source isn't enough
Zen gives you the addresses developers committed with. SearchIn's identity and leak providers show where else each address is registered and which breaches it appears in.
FAQ
Zen with otlite, answered
How do I install Zen on Kali, Ubuntu, or macOS?
Install otlite once with pipx install otlite (or the one-line installer on the otlite page), run otlite init, then otlite install zen. The tool lands in its own virtualenv under ~/.otlite/, pinned to a version that was tested, so nothing touches your system Python. otlite doctor prints the command that fixes a missing git or venv module.
Which inputs does Zen take through otlite?
u: (username), url: (url). otlite maps each prefix to Zen's own flag. Everything after -- that is not a typed input is passed through unchanged, so the original flags still work.
Where does otlite save Zen results?
Under ./results/zen/<target>/ in the folder you run from, as a timestamped output file plus a .meta.json sidecar (the exact command, timing, exit code, and SHA-256) and a .envelope.json with the entities found. Add --case <name> to group runs, otlite results to list them, and otlite diff zen <target> to compare the last two.
Does Zen need an API key or a login?
No key is required for the basic run. Optional keys, where the project supports them, go in with otlite keys set NAME and are passed only to tools that declare them.
Can I run Zen together with other tools?
Yes. otlite run --all u:jane_doe runs every installed tool that takes username input, in parallel, including Zen. Save the combination as a playbook to repeat it.