Amy AI — local-first desktop assistantYour computer, talked to.

Amy AI is a voice assistant that runs on your own machine. She hears you across the room, looks at whatever is on your screen, drives your apps for you, and models real CAD parts — with the language models running locally through Ollama, so nothing is shipped off to an API.

Python + PyQt5 Ollama No API keys Offline speech Windows
amy — listening
you Amy, what am I looking at?
amy A pull request diff, Sir — three files, mostly the audio engine. The failing test is in the barge-in handler.
you Model me a hinged enclosure, 80 by 50 by 30 millimetres.
amy Built and checked. STEP exported to amy_data/cad. [preview]
you Email that to me and put the kettle playlist on.
amy Sent. Spotify resuming — anything else?
Capabilities

What a local AI assistant can actually do

Amy has hands, eyes and ears on the machine she runs on. Every subsystem below is part of the same process — one wake word reaches all of them.

Full-duplex voice

She listens while she speaks. Interrupt her mid-sentence and she stops — barge-in is voice-activated, with a clap or a global hotkey as backup wake signals.

Read more

Screen awareness

A vision model reads your actual display on an interval. Ask what's on screen, what an error means, or what that dialog is asking for.

Read more

Computer control

An agent that finds and drives real applications through UI automation — opening, clicking, typing. Risky steps wait for your approval first.

Read more

Real CAD, not meshes

CadQuery builds exact B-rep solids — hinged assemblies, tolerances, STEP export — then a visual check confirms the part came out as described.

Read more

Cameras & gestures

Run several named cameras — desk, bench, printer — and switch by voice. Point one at something and ask what it is. Gestures map to actions: open palm pauses media, fist mutes.

Read more

Proactive engine

She thinks on a timer, watches folders for new files, and raises things worth raising — rate-limited, and silent during quiet hours.

Read more

Memory that persists

Transcripts, a knowledge base and learned skills live on disk in amy_data, watched for changes and recalled in later conversations.

Read more

Routines

Things that run on a schedule, in her own words. “Every day at 8, brief me on the weather” — and a routine can do anything you could say out loud.

Read more

An audit trail

Every plan approved or refused, every message sent, every app driven — written to disk as it happens. Software that can click buttons for you should be able to show its receipts.

Read more

Also on Android

A second build that runs on the phone itself, so it still works with your PC off. Always listening, drives your apps, and a floating orb over everything else.

Read more

Model routing

Separate local models for fast replies, reasoning, code, CAD and vision. Auto-select picks the right one per request instead of one model for everything.

Read more

Everything stays home

Inference runs against localhost. Mail, messaging and smart-home integrations are opt-in, and credentials live only in your own config file.

Read more
Architecture

How an offline voice assistant works, wake word to reply

What happens between you saying “Amy” and hearing an answer back.

wake word mic · clap · VAD speech → text whisper / vosk intent router grammar match + reference resolve local model skills & plugins computer agent vision · CAD compose deliberate self-check voice edge-tts + card
  1. Wake wordMicrophone, clap detection and voice activity detection decide when she is being spoken to.
  2. Speech to textWhisper or Vosk transcribes locally, on real speech only.
  3. Intent routerGrammar matching and reference resolution work out what you meant.
  4. Local model, skills, agent or visionThe request fans out to whichever subsystem can answer it.
  5. ComposeThe answer is deliberated over and self-checked before it is given.
  6. Voice and cardA short spoken reply through edge-tts, with the full answer on screen.
Always listening, cheaplyVoice activity detection gates the expensive stages, so the transcriber only runs on real speech.
Grammar before guessingConfident phrase matches execute directly; borderline ones get a clarifying question instead of a wrong action.
Approval gatesAnything classified as risky pauses for a yes, with a timeout that defaults to declining.
Spoken replies stay shortThe full answer lands on the on-screen card; the voice gets the summary.
Setup

How to set up a local voice assistant on Windows

Windows, Python 3.10 or newer, and a machine with enough headroom to host a local model.

Clone and install

CadQuery and OpenCV are heavy, but they're imported lazily — nothing loads until you ask for CAD or the camera.

git clone https://github.com/edzzztech/Amy-AI.git
cd Amy-AI
pip install -r requirements.txt

Pull the local models

Install Ollama, then pull a chat model, a vision model and an embedding model. Amy can start the Ollama server herself on launch.

ollama pull llama3.2          # conversation + reasoning
ollama pull llava             # screen and camera vision
ollama pull nomic-embed-text  # memory search

Fill in your config

Open amy_config.json and replace the placeholders. Everything is optional except the Ollama block — skip any integration you don't want and that feature simply stays quiet.

"assistant": {
  "wake_word": "amy",
  "user_title": "Sir",
  "default_city": "London",
  "neural_voice": "en-GB-SoniaNeural"
}

Say hello

She greets you on launch, then waits for the wake word. Say “Amy, what can you do?” to hear the current skill list.

python amy.py
Configuration

Worth knowing about

amy_config.json holds every key and tunable — nothing is hard-coded in the source. These are the settings most worth changing first.

SettingDefaultWhat it does
assistant.wake_wordamyWhat she answers to. Pick something that doesn't collide with your normal speech.
assistant.neural_voiceen-GB-SoniaNeuralAny Microsoft Edge neural voice. Free, no key, and far better than system TTS.
assistant.barge_invoiceHow to interrupt her mid-reply. voice cuts her off as soon as you start talking.
assistant.automation_approvalriskyWhen to ask before acting. risky gates destructive steps only; all gates everything.
assistant.allow_shell_commandsfalseOff by default, deliberately. Turn it on only if you want her running shell commands.
ollama.auto_selecttrueRoutes each request to the fast, reasoning, code, CAD or vision model automatically.
ollama.auto_starttrueStarts the Ollama server on launch if it isn't already running.
proactive.levelnormalHow often she speaks up unprompted, bounded by quiet_hours and max_per_hour.
camera.start_on_launchfalseThe webcam stays off until you ask for it. Gestures need it running.
ui.themearcWindow theme, plus which controls appear in the bottom bar.
Also on your phone

Amy for Android, running on the device

A second build that runs on the phone itself rather than remote-controlling your computer — so it still works with the PC switched off. Same personality, same orb, same memory format.

Always listening

Say “Amy” and she answers. A conversation window after each exchange means follow-ups don’t need her name again.

On-device model

A small local model with GPU acceleration. With Gemma 3n she can see, too: photos from her camera and pictures you attach appear in the chat with her answer. Conversation stays on the phone and works in aeroplane mode.

Drives your apps

Opens apps, taps by name, types into fields and reads the screen through Android’s accessibility service. Root is optional and only adds to it.

A floating orb

The same mark hovering over everything else. Drag it anywhere, tap to open her, long-press to put her to sleep.

Phone controls

Timers, alarms, the torch and media volume. The time, the date and the battery are read from the phone, not guessed by the model.

Looks things up

“Google…” or “look up…” searches the web, and questions about news, prices, scores or the weather do it by themselves. She names her sources. Only the search words leave the phone.

Your files and your PC

Attach a text or Word document and ask about it. Pair with Amy on your computer, then say “on my PC…” to send it a command over your own network.

Installing it

There’s no Play Store build — you build it from source. About twenty minutes, most of it waiting for downloads.

Open the project

Install Android Studio, then open the android/ folder — not the repository root, which would confuse Gradle. Let it sync; the first run pulls down several gigabytes.

Put the phone in developer mode

Tap Build number seven times under Settings → About phone, then turn on USB debugging in Developer options. Plug the phone in, accept the prompt, pick it in the device dropdown and press Run.

Give her a model

For talking, Gemma 3 1B is about 0.6 GB. For her to see as well, Gemma 3n E2B is 3.7 GB — take gemma-3n-E2B-it-int4.litertlm. Both are gated, so accept the Gemma licence on Hugging Face first. Download it on the phone, then tap Attach in Amy and pick the file: she copies it into place and loads it. Or push it from a computer with adb (in PowerShell, Android Studio’s copy is at $env:LOCALAPPDATA\Android\Sdk\platform-tools\adb.exe):

adb push gemma-3n-E2B-it-int4.litertlm /sdcard/Android/data/io.github.edzzztech.amy/files/

A .task or .litertlm file in that folder is picked up whatever it’s called.

Grant what she needs

Allow the microphone and notifications when asked. For app control, turn on Settings → Accessibility → Amy — Android only lets an app open other apps from the background with that, or Display over other apps, switched on. Set her battery usage to Unrestricted, or Android will quietly kill the listening service after a while.

Not a portCAD, reading your PC’s screen and Windows automation can’t cross over. A phone runs a 1–3B model against your desktop’s larger ones, so expect it to be quicker but less capable.
Still localThe model and your conversations stay on the handset; speech goes through your phone’s own recogniser, on-device where the phone has one. Web lookups send only the words searched for. Pairing with the PC needs no account and no server in between.
Android 10 or newerBuilt against API 36 (Android 16). Any reasonably recent phone will do; more RAM means you can run a larger model.
Questions

Common questions about running AI locally

What people usually want to know before installing an offline assistant.

Is Amy AI free?

Yes. The code is free to use, change and share for any noncommercial purpose under the PolyForm Noncommercial licence. There are no API keys, no subscription and no per-request cost, because the models run on your own hardware.

Does it work completely offline?

The assistant itself does. Speech recognition, the language model and the vision model all run locally, so conversation, screen reading and CAD work without a connection. Optional extras that are inherently online — weather, web research, Spotify — need one.

How is this different from Alexa, Siri or ChatGPT?

Those send your voice to a company's servers and can't touch your machine. Amy runs on your PC, sees your screen, opens and drives your applications, and keeps every transcript on your own disk.

What hardware do I need to run a local LLM?

Anything that can host your chosen Ollama model. A small model like llama3.2 runs on 8 GB of RAM; vision and reasoning models want more, and a GPU makes replies noticeably faster. Heavy parts load only when used.

Is any of my data sent anywhere?

Inference goes to localhost. Email, messaging and smart-home integrations are opt-in and only contact services you configure yourself. Credentials stay in your own config file on your machine.

Can it really control my computer?

Yes — it finds and drives real applications through Windows UI automation. Anything classed as risky pauses for your approval first, and shell command execution is off by default.

Is there a phone app?

Yes — an Android build that runs the assistant on the handset itself, so it works with your PC off. You build it from source; there’s no Play Store release.

Does it run on Mac or Linux?

Not yet. The automation layer uses Windows-specific APIs, so Amy currently targets Windows 10 and 11.

Can I use more than one camera?

Yes. Add as many as you like, give each a name, and switch by voice — “scan for cameras”, then “switch to the bench camera”.

Have a look at the source

One Python file, no services, no accounts. Clone it, point it at a local model, and talk to your computer.