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

viberadio-fm

v0.2.5

Published

Local text-to-speech CLI and MCP server for coding-session narration and recaps using macOS say, Linux espeak, or spd-say.

Readme

VibeRadio

npm version Downloads/month MIT license

Website · Setup · Library and MCP

VibeRadio is an open-source text-to-speech CLI and library that turns supplied text or coding-session events into local spoken narration for developers.

Install

npm install -g viberadio-fm
viberadio say "Build passed"

Requires Node.js 18 or newer and a system speech tool: macOS say, Linux espeak, or Linux spd-say. Success: you hear “Build passed” and see a local-provider status message. If speech is unavailable, the CLI prints the text and a setup warning, then exits successfully. No API key or environment variables are required. The CLI does not load .env files.

Recap a session

printf '[{"kind":"tests-pass","count":12}]' | viberadio recap
printf '[{"kind":"tests-pass","count":12}]' | viberadio recap --style podcast

The second command changes the script to host-labelled dialogue. Both styles use one system voice. You can also pass a JSON-array file: viberadio recap session.json --mode podcast.

Features and limits

  • Local speech: the default audio path disables network egress and uses the system speech runner from @pooriaarab/vibe-core.
  • Recap scripts: formats milestone events; accepts monologue or podcast styles and summary or podcast modes.
  • Library bridge: successful library recap() appends a best-effort event for vibenotifications; CLI and MCP recaps call narration directly.
  • Two MCP tools: narrate speaks text; recap builds and speaks an event recap.
text / event array -> narration script -> system speech tool -> audio

There is no automatic agent-session watcher or background start command. Reactive music, cloud voices, distinct podcast voices, recording, visualizers, and a menubar application do not ship. This package does not include Claude Code, Codex, or Gemini adapters; pass text or events from your workflow. Source inspection confirms three system-tool choices through the shared runner. No physical audio output was verified for this rewrite.

Library and MCP

import { buildRecapScript, narrate, recap } from 'viberadio-fm';

console.log(buildRecapScript([{ kind: 'tests-pass', count: 12 }]));
await narrate('Build passed');
await recap([{ kind: 'task-done', message: 'Fixed login' }]);

buildRecapScript() is pure and works without speech tools. narrate() throws TtsUnavailableError when audio cannot run. createNarrator() exposes dependency injection; TypeScript declarations ship with the package. Configure an MCP client with:

{"mcpServers":{"viberadio":{"command":"viberadio","args":["mcp"]}}}

CLI commands: say, recap, mcp, help/--help/-h, and --version/-v. The say command accepts --style/-s; recap also accepts --mode/-m and file or stdin input. Set VIBERADIO_DEBUG=1 for speech-failure details.

Status and links

Version 0.2.4 is pre-1.0. Interfaces can change; this package provides no managed audio service. The repository's interactive prototype and launch video show product direction, not shipped functionality. Report an issue · Vibe Suite · MIT license