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

vent-hq

v0.13.1

Published

Vent CLI — CI/CD for voice AI agents

Downloads

560

Readme

vent-hq

Agent CLI for voice AI development. Lets coding agents (Claude Code, Cursor, Codex, Windsurf) place real calls against your voice agent and read back transcripts, latency, audio, tool calls, and 60+ computed metrics — so they can iterate on prompts, flows, and platform config based on what actually happened.

Works with Vapi, Retell, LiveKit, ElevenLabs, Bland, and custom WebSocket endpoints.

npx vent-hq@latest init

How it works

  1. Your coding agent writes a Vent caller config (.vent/suite.json) with a persona and a call goal.
  2. It runs vent-hq run -f .vent/suite.json. Vent joins the call as a voice caller, drives the conversation, and records everything.
  3. Vent returns a single JSON result: full transcript, recorded audio URL, per-turn latency, tool-call trace, and call metadata. Your agent reads it and decides what to change.

The agent is the brain. Vent is the instrument.

Install

npx vent-hq@latest init

init will:

  • Authenticate via GitHub (if you have gh installed) or open a browser for device-code auth
  • Install skill files for Claude Code (.claude/skills/vent/SKILL.md), Cursor (.cursor/rules/vent.mdc), Codex (AGENTS.md), and Windsurf (.windsurf/skills/vent/SKILL.md)
  • Scaffold a starter suite at .vent/suite.json

After init, your coding agent reads the skill file and takes over from there.

Example suite

{
  "connection": {
    "adapter": "vapi",
    "vapi_assistant_id": "asst_..."
  },
  "calls": {
    "happy-path": {
      "caller_prompt": "You're a customer wanting to book a haircut for Friday at 3pm. Be friendly but a little vague about the date at first.",
      "max_turns": 8
    }
  }
}

Set VAPI_API_KEY in .env and run:

npx vent-hq run -f .vent/suite.json

Swap adapter for retell, livekit, elevenlabs, bland, or websocket to target a different platform. See the docs for the per-platform connection block.

Commands

| Command | Purpose | |-------------------------------------|------------------------------------------------------------| | vent-hq init | One-time setup: auth, skill files, starter suite | | vent-hq run -f <suite.json> | Run a call (or all calls) from a suite, stream results | | vent-hq run -f <s> --call <name> | Run a single named call | | vent-hq stop <run-id> | Cancel a queued or running call | | vent-hq agent start -f <s> | Keep a relay session open for a local WebSocket agent | | vent-hq login / logout | Manage credentials |

Run vent-hq <command> --help for command-specific options.

What you get back

Every run returns a single JSON object on stdout. Shape:

{
  "run_id": "01J...",
  "status": "complete",
  "calls": [
    {
      "name": "happy-path",
      "status": "complete",
      "duration_ms": 42180,
      "latency": { "p50_ms": 612, "p95_ms": 1180, "time_to_first_audio_ms": 540 },
      "transcript": [
        { "role": "agent", "text": "Hi, this is Acme Salon, how can I help?" },
        { "role": "caller", "text": "Hey, I'd like to book a haircut for Friday." }
      ],
      "tool_calls": [{ "name": "check_availability", "args": {...}, "result": {...} }],
      "recording_url": "https://...",
      "call_metadata": { ... }
    }
  ]
}

Verbose fields are gated behind --verbose to keep agent context lean.

Platform notes

  • Vapi, Retell, ElevenLabs — hosted only. Set the API key + assistant/agent ID in .env.
  • LiveKit — works against local dev agents and LiveKit Cloud with the same config (different LIVEKIT_URL). Install @vent-hq/livekit (Node) or vent-livekit (Python) for tool-call and component-latency observability.
  • Bland — supports pathways (bland_pathway_id), personas (persona_id), or inline task prompts.
  • Custom (WebSocket) — point at a hosted endpoint with agent_url, or run a local agent with start_command + agent_port. Vent tunnels audio through a relay so your machine doesn't need a public IP.

Platform credentials are encrypted at rest (AES-256-GCM) and never appear in chat logs or run payloads.

Links

License

MIT