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

@1presence/speech

v1.3.0

Published

Free speech-to-text for Mac — dictate into any app using your browser's built-in voice recognition, no subscription required

Readme

@1presence/speech

Free, private speech-to-text for Mac. No cloud. No subscription. No monthly fee.

Dictate into any app on your Mac — terminal, editor, notes, chat, anything — using the speech recognition that is already built into Chrome or Edge. Your voice is processed entirely on your device; nothing leaves your machine.

One command to start:

npx @1presence/speech

Your browser opens automatically. Start speaking.


Why this exists

macOS has excellent voice input, but routing speech into a terminal or a specific app is harder than it should be. This tool fills that gap: a clean browser UI where you dictate, review your words, and send them — live, as you speak — into wherever your cursor is sitting.

It works with your browser's built-in Web Speech API (Chrome and Edge on Mac have the best recognition quality). No API keys. No account. No sending audio to a third party. Just open it and talk.


Requirements

  • Node.js 18 or later
  • Chrome or Edge (Web Speech API has the widest support there)
  • macOS (keystroke injection uses AppleScript; the browser UI works on any OS, but the send-to-app feature is Mac-only)

Usage

One-off, no install needed

npx @1presence/speech

The browser opens at http://127.0.0.1:8787 automatically. Allow microphone access when Chrome asks. Start speaking — words appear in the transcript as you go.

Installed globally

npm install -g @1presence/speech
1presence-speech

In a project

npm install @1presence/speech
npx 1presence-speech

Sending text to apps

Three delivery modes — pick from the dropdown:

| Mode | How it works | Best for | |------|-------------|----------| | Focused app typed keystrokes | AppleScript keystroke — types character by character into the focused window | Most apps, most of the time | | Frontmost app via paste | Copies to clipboard and sends Cmd+V | Apps that handle paste better than keystroke | | iTerm active session | iTerm's native write text API | iTerm users |

Click "Send to app" to send the full transcript at any time. Or leave Live word mode enabled (the default) to stream words into the focused app as you speak — no need to click between sentences.


macOS permissions

The first time you send text, macOS will block it. Here is how to fix that in under a minute:

  1. Open System Settings > Privacy & Security > Accessibility
  2. Find the app you used to run the command — Terminal, iTerm, Warp, VS Code, Cursor — and enable it
  3. If it is not listed, click + and add it from /Applications
  4. Fully quit and reopen that app, then run npx @1presence/speech again

If macOS still blocks input after enabling the app, reset the Accessibility permissions database:

tccutil reset Accessibility

Then repeat the steps above.

For iTerm mode, also open System Settings > Privacy & Security > Automation and allow your terminal to control iTerm.


Options

| Variable | Default | Description | |---|---|---| | PORT | 8787 | Port the local server listens on | | HOST | 127.0.0.1 | Host to bind — loopback only by default |


How it works

A small Node.js HTTP server (zero dependencies) serves the browser UI and exposes a POST /paste endpoint. The browser page uses the Web Speech API for recognition — Chrome's built-in engine, running entirely on device. When words are ready, the page posts them to the local server, which uses AppleScript (osascript) to deliver them to the focused app. Nothing hits the internet.

Live word mode sends words as they are recognised, before Chrome finalises the transcript, so they appear in your app immediately. A phrase-ordering gate in the browser ensures words always arrive in the correct sequence even when Chrome is processing multiple speech segments in parallel.


Part of 1Presence

This tool is part of 1Presence — an AI agent that lives in your pocket. It reads your notes and email, remembers your conversations across sessions, connects to the tools you already use, and works from your phone, tablet, or any browser without needing an app install.

Speech Terminal is one piece of the productivity toolkit we built for ourselves and decided to share. If you want an AI that truly knows your context — not just the last few messages — 1Presence is worth a look.


Troubleshooting

"Unsupported" error — Open the page in Chrome or Edge. Safari and Firefox do not support the Web Speech API.

Error 1002 — macOS blocked keystroke injection. Grant Accessibility permission to the terminal app running the server, fully quit and reopen it, then try again.

Speech stops after a few seconds — Chrome may have revoked microphone access. Click the lock icon in the address bar and set Microphone to Allow.

iTerm does not appear in Automation settings — Click Test in 3s to trigger the macOS permission prompt, then check System Settings > Privacy & Security > Automation.

Words arrive out of order or duplicated — Make sure you are on the latest version: npx @1presence/speech@latest. Version 1.0.0 fixed a phrase-ordering bug that could scramble live-word output during fast continuous speech.