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

@vantio/cli

v0.3.18

Published

Vantio Optics CLI — wrap any AI agent and observe LLM egress. Blind by design, not a proxy. Sight Loop: wrap → capture → inspect.

Readme

@vantio/cli

npm

Wrap a Node agent with Vantio Optics — free visibility into what it sends. Current npm release: 0.3.18. Python needs vantio-agent-sdk on that interpreter; prefixing vantio run python does not intercept by itself.

npm install -g @vantio/cli
# or:
curl -fsSL https://vantio.ai/install.sh | sh

Quick start

vantio run node agent.js        # Free Observe — no key needed
vantio login <your-api-key>     # optional — Gate / paid features

vantio login validates your key against https://vantio.ai/api/v1/config and, on success, stores it at ~/.vantio/config.json (chmod 600). After that, vantio run injects it automatically — no VANTIO_API_KEY juggling. Free Optics needs no key. Paid Gate keys come from a trial ([email protected]) or Stripe once live — there is no public self-serve key dashboard yet (/dashboard redirects).


Commands

vantio login [key]    # save & validate your API key (prompts if omitted; input masked on a TTY)
vantio logout         # remove the stored key
vantio whoami         # show the stored key (masked) + live connection status
vantio run <program>  # spawn a program under the Vantio execution context
vantio discover       # show your Shadow AI attack surface (Pro / Enterprise)
vantio prove          # generate an auditor-ready proof artifact from a run log (Free)
vantio search [query] # search local run logs by host, path, action, or free text (Free)
vantio tail           # show the latest calls from a captured run (Free)
vantio diff <a> <b>   # compare two local runs — hosts, counts, bytes (Free)

login refuses to save a key the server rejects (HTTP 401). The full key is never printed — whoami and login output only ever show a masked form like vk_liv…a1b2.


Usage

vantio run node agent.js
vantio run tsx agent.ts

Wrap a Node process with vantio run. The CLI intercepts outbound calls to known LLM APIs via Node fetch, undici.fetch, undici.request (including Client / Pool / Agent .request()), undici.stream / pipeline / dispatch / connect / upgrade, Node http/https, Node http2.connect / session.request, Node net/tls connect to in-scope hosts, and outbound bytes after undici.upgrade / CONNECT, and records connection metadata locally (and to Gate when a key is configured).

Python is not wrapped by this interceptor. Install vantio-agent-sdk on that interpreter first, then:

pip install vantio-agent-sdk
vantio run python agent.py

With the SDK installed, vantio run python injects the wrap (sitecustomize on PYTHONPATH) so you do not have to edit the script. Without the SDK, the prefix does not intercept. shield() is the in-process alternative when you want a trace id inside the process.

Your code doesn't change. Your agent runs normally. If you've run vantio login, the stored key is injected into the child process; an explicit VANTIO_API_KEY in your environment always takes precedence.


Flags

vantio run --audit node agent.js     # flag events as VANTIO_AUDIT_MODE=1
vantio run --summary node agent.js   # print a run summary on exit

--audit — marks all events from this run as audit mode. Useful when running agents in observation-only mode before enforcing policies.

--summary — prints a summary when the process exits:

[ ∅ VANTIO ] Run Summary
  LLM calls:    7
  Hosts:        api.openai.com, api.anthropic.com
  Total bytes:  94,201
  Duration:     12.4s
  → Run `vantio login` to enforce policy and persist events.

In free mode (no API key), intercepted calls print to the terminal in real time.


vantio prove — Auditor-Ready Proof Artifacts (Free)

vantio prove                           # HTML report — most recent run
vantio prove --list                    # list all local run logs
vantio prove --run=<trace-id>          # report for a specific run
vantio prove --format=md               # Markdown to stdout
vantio prove --format=html --out=proof.html

vantio prove reads the run logs that vantio run automatically writes to ~/.vantio/runs/ and generates a self-contained proof document. Reports include trace IDs, machine/PID, byte counts, host breakdown, and action labels.

Reports contain zero prompts or completions — safe to share with auditors.

Available on Free — no API key required. Full reference: docs/prove.md


vantio search / tail / diff — Inspect without a dashboard (Free)

vantio search openai                   # free-text search across local runs
vantio search --host=api.anthropic.com
vantio tail                            # latest calls from the most recent run
vantio tail -n 50 --run=<trace-id>
vantio diff <run-a> <run-b>            # hosts added/removed, call and byte deltas

Same ~/.vantio/runs/ logs as vantio prove. Metadata only — never prompts or completions. No API key required.


vantio discover — Shadow AI Attack Surface

vantio discover [--since=24h|7d|30d] [--host=<hostname>] [--json]
vantio discover --local                # Free-tier: local run logs only, no key needed

Shows every AI agent call recorded in your Vantio workspace, grouped by target host. Answers the question: "What AI agents are running in my environment, and are they all governed?"

  • Free (--local) — reads local run logs from ~/.vantio/runs/. No API key needed. Covers only processes started with vantio run on this machine.
  • Pro users — see all SDK-monitored LLM calls with governance status (OBSERVED / ALLOWED / REDACTED / BLOCKED).
  • Enterprise users (Phantom Engine) — additionally surfaces processes that called LLM endpoints without a Vantio trace_id — the Shadow AI agents that have no governance coverage.
Shadow AI Attack Surface — last 7d
------------------------------------------------------------------------
TARGET HOST                       CALLS    ALLOWED   REDACTED  BLOCKED   OBSERVED  SHADOW?   LAST SEEN
------------------------------------------------------------------------
api.openai.com                    142      138       3         0         1         ⚠ YES     2026-06-17 09:12:04 UTC
api.anthropic.com                 57       57        0         0         0         no        2026-06-17 14:33:21 UTC
------------------------------------------------------------------------
2 host(s) shown  |  ⚠  1 Shadow AI indicator(s) detected

Options:

| Flag | Description | |---|---| | --since=<period> | Look back 24h, 7d, or 30d (default: 24h) | | --host=<hostname> | Filter to a specific target host | | --json | Output raw JSON instead of a formatted table | | --local | Local run logs only — no API key required (Free tier) |

Run vantio discover --help for full documentation.

Full discovery requires a Pro or Enterprise account. --local works on Free without any key.


Enforcement (Vantio Gate)

With a Gate VANTIO_API_KEY, the interceptor fetches policy from the Vantio Gate control plane and enforces it locally in your process. A few semantics worth knowing:

  • Host scope — policy applies to known LLM hosts plus any host named in blocked_hosts/allowed_hosts. blocked_hosts blocks any matching host (LLM or not); a non-empty allowed_hosts blocks any in-scope host not on the list. Unrelated traffic (OS, package managers, etc.) is never touched.
  • Spend cap — the USD spend cap is best-effort and per-process. Bytes are estimated (request + response, including streamed responses counted after the fact), so the cap gates subsequent calls once the running total is crossed rather than aborting a call mid-stream, and it does not aggregate across processes.

Environment variables

| Variable | Description | |---|---| | VANTIO_API_KEY | Gate API key from a trial ([email protected]) or Stripe once live — /dashboard redirects to docs | | VANTIO_INGEST_URL | Ingest endpoint (default: https://vantio.ai) | | VANTIO_TELEMETRY_DISABLED | Set to 1 to opt out of anonymous usage telemetry | | DO_NOT_TRACK | Set to 1 to opt out of anonymous usage telemetry |


Anonymous telemetry

Vantio sends a small anonymous, opt-out usage ping (a random id, runtime/OS, LLM hostnames, and counts) to help prioritize providers and runtimes. It never includes prompts, completions, API keys, or PII, and never blocks your agent. Opt out with VANTIO_TELEMETRY_DISABLED=1 or DO_NOT_TRACK=1.


Supported runtimes

Auto-intercepts LLM calls when running Node.js processes (node, tsx, ts-node, npx) — Node fetch, undici.fetch, undici.request, undici.stream / pipeline / dispatch / connect / upgrade (including tunnel bytes after upgrade), Node http/https including ClientRequest, Node http2, Node net/tls, WebSocket (host-block and outbound frame size), and Node-spawned curl and wget (including env / timeout / nice, curl -K url=, curl -F size from stat, stdin size when stdin is a file, wget -i URL lists, sh -c, file-body size from --post-file / @file, and Gate PII rewrite of inline argv bodies). Spawned httpie shares host-block and inline --raw / field redaction; aria2c shares host-block from argv URLs. Current npm release: @vantio/cli 0.3.18.

Python, Ruby, and other runtimes are spawned without this Node interceptor. For Python, install the Python SDK (vantio-agent-sdk 3.0.12) and then vantio run python agent.py or shield() — urllib / http.client / requests / httpx / aiohttp / urllib3 / pycurl / socket.connect / subprocess curl and wget.


Supported LLM providers

OpenAI (including regional), Anthropic, Google Gemini, Azure OpenAI, Azure AI, Cohere, Mistral, Groq, Together AI, Perplexity, xAI, DeepSeek, Fireworks, OpenRouter, Cerebras, Voyage AI, SambaNova, DeepInfra, Amazon Bedrock, Google Vertex AI, Hugging Face Inference, Replicate, Ollama, hosted NVIDIA NIM.

Browser paths stay outside this wrap. Phantom Engine is runtime protection on enrolled Linux when you need control beneath the app wrap.


SDK

For explicit trace correlation across async hops, use the SDK alongside the CLI:

npm install @vantio/agent-sdk
import { shield, reportAnomaly } from "@vantio/agent-sdk";

await shield(async () => {
  await runMyAgent();
});

vantio.ai · Optics · Pricing · MIT License