npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

incognitify

v0.1.0

Published

Mask sensitive data before sending it to an LLM. CLI for @incognitify/core.

Downloads

15

Readme

incognitify (CLI)

Command-line wrapper over @incognitify/core.

npm install -g incognitify
incognitify --help

Commands

incognitify mask [--vault PATH] [--dry-run] [--strict] [--require TYPES]
incognitify unmask --vault PATH
incognitify run [--strict] [--require TYPES] -- COMMAND [args...]

mask

Read text from stdin, mask sensitive values, write to stdout.

echo 'Email [email protected]' | incognitify mask
# Email ⟦EMAIL_1⟧
  • --dry-run prints a report of what would be masked, no masked text.
  • --vault PATH writes the vault to disk as JSON. This is the only way to reuse the same vault from a later unmask invocation. Loud opt-in — without it, the vault stays in memory and is lost on exit.
  • --strict makes masking fail-closed: if the masked output still contains anything a detector recognizes, the command writes nothing and exits non-zero, so questionable text never flows downstream. Use it in CI/automated pipelines.
  • --require TYPES asserts that each comma-separated type was actually masked (e.g. --require email,api_key); if any is absent, it fails the same way. Implies --strict. Catches the case where detection silently found nothing.
# Fails (exit 1, no output) — an API key was expected but none was detected:
echo 'no secrets here' | incognitify mask --require api_key

unmask

Read masked text from stdin, swap tokens back to original values using a vault file produced by mask --vault.

incognitify unmask --vault /tmp/v.json < masked.txt

run

Round-trip in a single process: stdin → mask → spawn COMMAND → unmask its stdout. The vault never touches disk.

echo 'Summarize: [email protected]' | incognitify run -- llm

Anything that reads stdin and writes stdout works as the inner command. With --strict / --require, the check runs before COMMAND is spawned, so a failed check aborts the round-trip and the command (the "LLM") is never called.

Pipe philosophy

The CLI is designed for composition:

cat prompt.txt | incognitify mask --vault v.json | llm | incognitify unmask --vault v.json

In practice, prefer incognitify run -- llm when possible — it keeps the vault entirely in memory.

Licensed under Apache-2.0.