Voice layer for your AI assistant

Speak freely.
Answer in any voice.

You talk. Your words appear on screen as you say them. Sonaris waits until you finish, then answers out loud in the voice you chose: Atlas, Aria, a character like Captain Merriweather, or one you bring yourself. Every exchange is written to a memory file you can open and read.

Works in Chrome, Edge and Safari with live captions. Firefox uses server transcription.

Portrait of the Sonaris founder in a navy suit and blue tie, in front of a gold-lit interface
The founder. Sonaris started as his own tool for talking to an assistant without typing.
How it works

Three rules, applied on every turn

1

You speak. Words appear live.

The console listens with the browser's speech recognition and prints interim words in grey while you talk, then sets them in cream once they are final. You always see what it heard.

2

It waits. It never talks over you.

A voice activity detector tracks your speech. Sonaris only answers after 900 ms of silence (you can set 400 to 2000 ms). If you start talking while it speaks, it stops within a quarter of a second and shows "Paused. Go ahead."

3

It answers, in the voice you chose.

The reply streams in sentence by sentence and speech starts on the first sentence, so you hear the answer while the rest is still arriving. Server voices from ElevenLabs or OpenAI, or the browser's own voice when neither is configured.

The Sonaris companion: a small, round, blue creature with large dark eyes and gold sparks in its fur, smiling
Meet your companion

A face that listens with you

The console is built around this small blue creature. It rests until you press the mic, wakes when you start talking, smiles while it thinks about your words, and bounces while it answers. Your words appear in a bubble beside it; the reply runs as subtitles underneath.

Voices

Two defaults, one character, and yours

Atlas

Male default

Warm baritone, measured pace. Answers first, then adds one useful detail.

Aria

Female default

Bright and clear. Plain words, natural rhythm, brief unless you ask for more.

Captain Merriweather

Example character voice

A theatrical sea captain with weather metaphors and a dry sense of humour. The real answer is always underneath the theatre.

Bring your own character

Add in the console

Give it a name, a style prompt, and a voice: an ElevenLabs voice ID, an OpenAI voice, the browser voice, or a 30-second audio sample to clone. It is saved to your license and appears in the picker.

Memory you can read

Every exchange goes to a file

Each time you finish speaking, and each time Sonaris finishes (or gets cut off), the console appends one line to a JSONL journal for your license. It then rewrites MEMORY.md, a plain-text summary of the last 50 turns grouped by day. Both files download from the memory panel, and you can delete everything with one button.

The last few turns are fed back into the assistant's prompt, so it remembers what you talked about yesterday without you repeating it.

{"role":"user","text":"Remind me what we decided about the launch date.","personaId":"aria","ts":"2026-09-03T14:02:11.418Z"}
{"role":"assistant","text":"You picked October 14th, and you wanted the pricing page live a week before.","personaId":"aria","ts":"2026-09-03T14:02:14.902Z"}
{"role":"assistant","text":"One more thing about the email list","personaId":"aria","ts":"2026-09-03T14:02:19.110Z","interrupted":true}
The Sonaris Skill

The voice protocol, as a skill for your own agent

The paid skill is a Markdown file your AI agent reads. It defines the seven rules the console follows: render interim captions, wait for a confirmed end of utterance, stop the moment the user speaks, reply in the active persona's voice, append a memory entry after every utterance and reply, keep a persona registry, and check the license before running. It is hosted behind the license check and downloads from /api/skill.

About the skill
  • Listen and caption
  • Wait for end of utterance (900 ms, configurable)
  • Stop on interruption, mark the reply interrupted
  • Speak in the active persona
  • Append JSONL memory, refresh MEMORY.md
  • Persona registry and character voices
  • License check via GET /api/license
Pricing

One payment. Yours to keep.

Sonaris license

$29 one-time
  • The voice console with live captions and turn-taking
  • Atlas, Aria, Captain Merriweather, and unlimited custom character voices
  • Persistent memory: JSONL journal and MEMORY.md per license
  • The Sonaris Skill file, downloadable while your key is valid
  • Bring your own OpenAI, ElevenLabs and Stripe keys; nothing is metered

Monthly

$9 per month
  • Same console, voices and memory
  • Same skill download
  • Cancel any time
FAQ

Questions people ask before buying

Is the microphone always on?

No. The microphone opens when you press the mic button or hold Space in the console, and it closes when you stop or leave the page. The marketing page never asks for it.

What is stored, and where?

Your final transcript and the assistant's replies, with a timestamp and the persona name, in a journal keyed to your license. In production it lives in Netlify Blobs; when you run Sonaris locally it is a real file at sonaris/memory/<license>.jsonl. Audio is never stored. Custom voices are stored the same way. Payment details stay with Stripe.

How do I delete my memory?

Open the memory panel (press M) and click "Delete all". That removes the journal and MEMORY.md for your license. There is no copy elsewhere.

Which browsers work?

Chrome, Edge and Safari show live captions through the Web Speech API. Firefox has no Web Speech recognition, so the console records short slices and sends them to the transcription function (OpenAI Whisper, which needs an API key). Typing works everywhere.

Do I need my own API keys?

For real answers, yes: an OpenAI-compatible key, or Netlify AI enabled on the site. For server voices, an ElevenLabs or OpenAI key. Without them the console still runs, tells you what is missing, and speaks with the browser voice.

What does the license unlock?

The console and the skill download. The key is checked by GET /api/license?key= and stored in your browser. If Stripe is not configured on a deployment, checkout hands out a demo key that is clearly labelled.