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

pi-friday

v0.2.3

Published

Dedicated communications side panel for pi — routes all conversation to a separate tmux pane with typewriter effect. Optional TTS and wake word detection. User data stored in ~/.pi/agent/friday/.

Readme

Friday

A pi package that adds a dedicated communications side panel. All conversation is routed to a separate tmux pane with typewriter effect, keeping your main window clean for code, diffs, and command output. Optionally enable text-to-speech and hands-free voice input via wake word detection.

Installation

pi install npm:pi-friday

Or from git:

pi install git:github.com/dantetekanem/friday

To try without installing:

pi -e npm:pi-friday

Requirements

Required (the extension will not load without these):

  • tmux — pi already requires this
  • perl — pre-installed on macOS

Optional — Voice output (TTS):

  • piper-ttspip3 install piper-tts
  • soxbrew install sox (provides the play command)
  • A Piper voice model in ~/.local/share/piper-voices/ (see Voices below)

Without piper-tts and sox, voice output is disabled. The panel still works for text.

Optional — Voice input (wake word + transcription):

  • openwakewordpip3 install openwakeword
  • faster-whisperpip3 install faster-whisper
  • pyaudiopip3 install pyaudio (requires brew install portaudio)
  • sounddevice + numpypip3 install sounddevice numpy

Without these, the wake word listener (/friday listen, Alt+L) is unavailable.

Shortcuts

| Shortcut | Action | |----------|--------| | Alt+M | Toggle voice on/off | | Alt+L | Toggle wake word listener on/off |

Commands

| Command | Action | |---------|--------| | /friday | Toggle the extension on/off | | /friday voice | Toggle voice output | | /friday listen | Toggle wake word listener | | /friday settings | Show current configuration |

The status bar shows active modes: FRIDAY, VOICE, DAEMON ON.

Wake Word

Say the configured wake word (default: "hey friday") to activate hands-free voice input. After detection, Friday records your speech, transcribes it locally with faster-whisper, and sends it as a message to pi.

Friday looks for custom wake word models in ~/.pi/agent/friday/. To set up the default "hey friday" wake word:

  1. Visit openwakeword.com/library (free, requires sign-in)
  2. Search for "hey friday"
  3. Download the .onnx file to ~/.pi/agent/friday/
  4. Set wakeWord.model in settings.json to the filename without .onnx

You can use any custom wake word — just download its .onnx model to the same directory.

Built-in models (no download needed): alexa, hey_mycroft, hey_jarvis, hey_rhasspy, timer, weather.

Voices

Friday uses Piper for text-to-speech. The default voice is en_GB-jenny_dioco-medium (British female).

Install the default voice:

mkdir -p ~/.local/share/piper-voices
cd ~/.local/share/piper-voices
curl -sL -o en_GB-jenny_dioco-medium.onnx \
  "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/jenny_dioco/medium/en_GB-jenny_dioco-medium.onnx"
curl -sL -o en_GB-jenny_dioco-medium.onnx.json \
  "https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/jenny_dioco/medium/en_GB-jenny_dioco-medium.onnx.json"

Use a different voice:

Browse voices at rhasspy/piper/voices. Download the .onnx and .onnx.json files to ~/.local/share/piper-voices/, then set voice.model in settings.json to the model name (without .onnx).

Settings

Edit settings.json in this directory:

{
  "name": "Friday",
  "voice": {
    "enabled": false,
    "model": "en_GB-jenny_dioco-medium",
    "speed": 0.9
  },
  "wakeWord": {
    "enabled": false,
    "model": "hey_friday",
    "threshold": 0.3,
    "whisperModel": "tiny.en"
  },
  "typewriter": {
    "enabled": true
  },
  "panelWidth": 30
}

| Setting | Description | |---------|-------------| | name | Display name in status bar | | voice.model | Piper voice model name (filename in ~/.local/share/piper-voices/ without .onnx) | | voice.speed | Speech speed multiplier (0.9 = slightly slower) | | wakeWord.model | openwakeword model name or custom .onnx filename without extension | | wakeWord.threshold | Detection confidence (0.0-1.0, lower = more sensitive) | | wakeWord.whisperModel | faster-whisper model size: tiny.en, base.en, small.en, medium.en | | typewriter.enabled | Typewriter text effect in panel | | panelWidth | Panel width as percentage of terminal |

License

MIT