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

@agfpd/voicetalk-runtime

v0.1.1

Published

Voice runtime-router for IAP peers.

Readme

voicetalk

A live-voice channel for a team of AI agents — the voice-presence component of iapeer.

CI license platform

voicetalk gives a person presence in an iapeer agent team through live voice: the owner says a wake-word, speaks, and an agent answers out loud from the host's speaker. To the agent, the person is an ordinary peer it reaches with send_to_peer — voicetalk turns speech into an inbound message and the agent's reply into spoken audio. It is the third runtime of iapeer after telegram-runtime and notifier-runtime, and the same single identity an agent already has across Claude, Codex, and Telegram.

Built for iapeer. It isn't a standalone voice assistant — it runs only inside iapeer, alongside telegram-runtime and notifier-runtime. It's an iapeer runtime whose messages travel over iapeer's own routing; the speech-to-text and text-to-speech themselves live in a separate voice service (voice-connect), which voicetalk consumes.

How it works

   person speaking aloud                        agent (Claude/Codex)
        │  "Boris, …"  (wake-word + speech)         │  send_to_peer(arthur, "…")
        ▼                                            ▼
   ┌──────────────────────────────────────────────────────────┐
   │  voicetalk — the voice channel                             │
   │  inbound:  microphone → wake-word → STT → recipient peer   │
   │  outbound: peer → TTS → host speaker                        │
   │  open-mic follow-up · endpointing · earcons                │
   └──────────────────────────────────────────────────────────┘
              speech ↔ text via voice-connect (STT / TTS)

Quick start

Status: text caркас (Фаза 2). The bidirectional router loop works end to end over text; the audio touchpoints (wake-word, STT, TTS) are stubbed and land in Фаза 3 — see the roadmap below.

You will need a working iapeer install (and, for Фаза 3, the voice-connect voice service).

npx @agfpd/voicetalk-runtime                      # install: binary on PATH + runtime manifest
iapeer create <person> --runtime voicetalk        # give a person a voice endpoint (operator-add)
voicetalk-runtime doctor                          # check the runtime + this peer's binding

Once a peer is created, the always-on voicetalk-runtime run router pumps IAP envelopes both directions. In Фаза 2 the inbound audio source is stubbed by a local injector you can drive by hand — the round trip works without a microphone:

voicetalk-runtime interface --wake-word "hey jarvis" --device mic0   # set the binding
# (run is launched by the foundation under the always-on supervisor)
voicetalk-runtime say --peer linus "what's the build status"        # inject an utterance (mic+STT stand-in)

An outbound peer reply arrives as an <iap> envelope on the router's stdin and is spoken by the AudioSink — a logging stub today, voice-connect TTS in Фаза 3.

What makes it different

  • Transparent channel. Agents get no microphone or speaker tools — to an agent, the person is just a named peer. The same send_to_peer reaches a human by voice, by Telegram, or by an AI agent alike.
  • One identity, another runtime. Voice is not a bolt-on assistant; it is one more runtime of the peer's single identity (from-runtime=voicetalk), exactly as Telegram is.
  • Modality framing for a naive agent. An agent has no senses — only envelope text. voicetalk marks the inbound envelope so a peer with no knowledge of the system answers in the right modality ("spoken, live — reply by voice, briefly").
  • Voice stays out of the core. Speech-to-text and text-to-speech live in the shared voice-connect service (multi-provider, one place to configure), not inside this runtime and not inside the iapeer foundation.
  • Conversational turn-taking. A wake-word only opens a conversation; after a reply, an open-mic window lets the next utterance continue without re-triggering. Endpointing and earcons are owned here, inside the audio session — the agent only sees the next message.

What it does not do (yet)

  • No audio yet: the wake-word, STT, and TTS touchpoints are stubbed (the inbound source is a local socket injector; the outbound sink logs instead of speaking). The bidirectional router loop itself works over text. Audio lands in Фаза 3 via voice-connect.
  • Foundation integration is a coordinated step: the voicetalk launch-adapter and runtime classification on the iapeer side gate iapeer create --runtime voicetalk (Фаза 1).
  • Single host, single owner, local microphone and speaker. Multi-device and multi-owner are out of scope for the MVP.

Roadmap

  • Фаза 0 — Scaffold. Package skeleton, CLI stub, contract constants. (done)
  • Фаза 1 — Foundation integration (iapeer). voicetalk launch-adapter, runtime classification, iapeer create --runtime voicetalk. (adapter code-complete; deploy coordinated with Фаза 2)
  • Фаза 2 — Runtime skeleton. runtime.json manifest + selfConfig hook; interfaces.voicetalk schema; bidirectional router loop with a text-only IAP round-trip (audio stubbed). (done)
  • Фаза 3 — Voice pipeline. Always-on wake-word → STT (inbound), TTS → speaker (outbound) via voice-connect; modality framing.
  • Фаза 4 — Latency and live acceptance. Tune the chain, conversational round-trip live.

Documentation

docs/ — what it is and how it will work (English; Russian in docs/ru/). This repository is the implementation.

License

Apache-2.0. Platform: macOS. voicetalk is the voice-presence runtime for the iapeer ecosystem — a component of iapeer, not a standalone system.