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

@acpfx/cli

v0.5.2

Published

Observable audio pipeline framework — pluggable voice agent pipelines via YAML config

Readme

@acpfx/cli

The acpfx orchestrator — spawns pipeline nodes as child processes, routes NDJSON events between them, runs first-time setup (model downloads), and displays a real-time terminal dashboard.

Install

npx @acpfx/cli@latest onboard

The onboarding wizard walks you through choosing a pipeline template, configuring API keys, and running your first pipeline. A prebuilt binary is downloaded for your platform.

Usage

# Run a pipeline by name (resolved from .acpfx/pipelines/ or ~/.acpfx/pipelines/)
acpfx run deepgram
acpfx run local-gpu

# Run with explicit config path
acpfx run --config path/to/pipeline.yaml

# Run headless (no TUI, logs to stderr)
acpfx run deepgram --headless

# Interactive onboarding
acpfx onboard

# Manage configuration
acpfx config set env.DEEPGRAM_API_KEY sk-...
acpfx config get defaultPipeline
acpfx config set defaultPipeline deepgram --global

# List and create pipelines
acpfx pipelines
acpfx pipelines create

Pipeline Resolution

When you run acpfx run <name>, the pipeline is resolved in this order:

  1. Direct path — if <name> contains / or ends with .yaml, load as file path
  2. Project-local.acpfx/pipelines/<name>.yaml
  3. Global~/.acpfx/pipelines/<name>.yaml
  4. Bundledexamples/pipeline/<name>.yaml (dev builds only)

If no pipeline is specified and no default is configured, the onboarding wizard runs automatically.

CLI Flags (acpfx run)

| Flag | Default | Description | |------|---------|-------------| | <pipeline> | | Pipeline name or path (positional) | | --config | | Explicit path to YAML config (overrides positional) | | --dist | dist | Path to built node artifacts (dev only) | | --ready-timeout | 10000 | ms to wait for each node's lifecycle.ready | | --headless | off | Disable TUI, log events to stderr | | --setup-timeout | 600000 | ms for node setup phase (model downloads) | | --skip-setup | off | Skip the --acpfx-setup-check phase |

Node Resolution

When the orchestrator encounters use: "@acpfx/<name>" in pipeline YAML, it resolves the node binary:

  1. Local JS bundledist/nodes/<name>.js → run via node
  2. Local native binarydist/nodes/<name> → spawn directly
  3. npx fallbacknpx -y @acpfx/<name>@latest → download and run latest published version

Setup Phase

Before spawning nodes, the orchestrator runs a setup check:

  1. For each node, runs <binary> --acpfx-setup-check (5s timeout)
  2. If any node reports {"needed": true}, runs <binary> --acpfx-setup to download models
  3. Progress is displayed to stderr; auth errors show clear instructions (e.g., huggingface-cli login)
  4. Skip with --skip-setup

Available Nodes

| Package | Type | Description | |---------|------|-------------| | @acpfx/mic-speaker | Rust | Native mic capture with AEC | | @acpfx/mic-file | TS | WAV file playback as mic input | | @acpfx/stt-deepgram | TS | Deepgram streaming STT | | @acpfx/stt-elevenlabs | TS | ElevenLabs streaming STT | | @acpfx/stt-kyutai | Python | Local STT via Kyutai moshi (MLX on Mac, PyTorch+CUDA on Linux) | | @acpfx/bridge-acpx | TS | Agent bridge (Claude via acpx) | | @acpfx/tts-deepgram | TS | Deepgram streaming TTS | | @acpfx/tts-elevenlabs | TS | ElevenLabs streaming TTS | | @acpfx/tts-kyutai | Python | Local TTS via Kyutai moshi (MLX on Mac, PyTorch+CUDA on Linux) | | @acpfx/tts-pocket | Rust | Local lightweight TTS via Pocket TTS | | @acpfx/audio-player | TS | Audio mixer with SFX | | @acpfx/recorder | TS | Records events + audio to files | | @acpfx/play-file | TS | Writes audio chunks to WAV | | @acpfx/echo | TS | Echoes events back (testing) |

Pipeline Templates

Built-in templates available via acpfx onboard:

| Name | STT | TTS | Requires | |------|-----|-----|----------| | deepgram | Deepgram | Deepgram | DEEPGRAM_API_KEY | | elevenlabs | ElevenLabs | ElevenLabs | ELEVENLABS_API_KEY | | local | Kyutai (on-device) | Pocket TTS (CPU) | No API key | | local-gpu | Kyutai (on-device) | Kyutai TTS (GPU) | No API key |

Building from Source

cargo build --release -p acpfx-orchestrator

License

ISC