Amie, a quiet voice assistant.
A small, voice-first assistant designed to say less. Hold to talk; release; receive the smallest useful answer.

Hold the mic, speak, release.
The embed asks for microphone permission. Holding the mic button (or spacebar) records; releasing posts the audio to a Vercel serverless function that transcribes, reasons, and replies with TTS. If a request isn't really directed at the assistant, it stays silent.
Voice assistants failed because they pretended to be human. Amie just tries to be useful.
The original Siri was the door I walked through into AI. Amie is, in some way, a quiet response to that door — what would it look like to build a voice assistant that respects context, tone, and the user's actual time?
The whole personality lives in one short system prompt: keep replies tiny, match the user's tone, and reply with the single token SKIP if a request isn't actually directed at the assistant. The main loop watches for SKIP and stays silent — the beginner-friendly version of wake-on-intent.
What it actually does.
Quiet by default
The system prompt forces one or two sentences, no filler, no markdown. Amie speaks like a person — terse if you're terse, gentle if you're tired.
Wake-on-intent (the simple version)
If a request isn't really directed at the assistant — a half-finished thought, a comment to someone else — the model returns the literal token SKIP and the loop stays silent.
Small persistent memory
Durable facts the user volunteers ('my name is …', 'I work at …') get appended to memory.json. Delete the file to wipe it. Falls back to in-process memory on serverless cold starts.
Two surfaces, one brain
Same four-step pipeline ships as a Python CLI (cleanest to read) and as a hold-to-talk web app deployed to Vercel. The serverless function handles /talk and /reset.
The system, in four moves.
- Step 01
Capture
Browser MediaRecorder captures the held mic input; the CLI uses sounddevice. Either way, an audio blob is the input.
- Step 02
Understand
Whisper transcribes the clip. The transcript is appended to a per-process conversation history that resets on cold start.
- Step 03
Reason
GPT-4o-mini answers under the system prompt — short, tone-matched, with optional memory recall. SKIP is a first-class output the loop watches for.
- Step 04
Respond
TTS synthesizes the reply, returned as base64 audio for the browser to play (or piped through afplay/mpg123 in the CLI).
"The best voice assistant isn't the one that talks the most. It's the one that knows when to stay quiet."
— Project notes, Amie