Give your AI agent a voice

Drop-in voice interaction for any AI agent. One npm install. Zero config. Works everywhere.

Try Live Demo

Minimal integration

Before — text only
// Your text-based agent
const agent = new MyAgent()

// User types a message
input.addEventListener('submit', (e) => {
  const text = input.value
  const response = agent.send(text)
  display.textContent = response
})
After — with voice
import { Ringing } from 'ringing-ai'

const ring = new Ringing({
  onSend: (transcript) => {
    myAgent.send(transcript)
  },
  onReceive: (callback) => {
    myAgent.on('message', (text) => callback(text))
  },
})

ring.start() // That's it.

Why Ringing.ai

Zero Dependencies

Uses native Web Speech APIs. No API keys, no cloud services, no costs. Everything runs in the browser.

Agent Agnostic

Works with OpenAI, LangChain, custom agents — anything. If it takes text in and returns text out, Ringing works.

Accessible

Built for everyone. Voice-first for users who need it. Screen reader friendly with proper ARIA attributes.

Plug & Play Widget

Optional floating mic button with animated visualizer. Inject into any page with one line. Dark and light themes.

Live Demo

Mock Agent
idle

Click the mic to start talking

Three steps. That's it.

1

Install

npm install ringing-ai
2

Connect

onSend: (text) => agent.send(text)
onReceive: (cb) => agent.on('msg', cb)
3

Start

ring.start()