Inspiration

AI coding tools assume you can see the screen: you skim a diff, click "Accept", glance at a terminal. For a blind developer every one of those steps goes through a screen reader, and most agent UIs are a wall of unlabeled panels. We wanted the opposite: a coding assistant where voice, keyboard and screen reader are the main way to work, and where you never have to trust what you can't check.

What it does

Artemis is a voice-first development environment for blind developers. You say (or type) what you want, "create a Python program that prints Hello World", and Artemis:

  • plans and edits the project with a Claude agent, and reads back what it is doing in short spoken lines;
  • asks before anything happens: every file write and every program run opens an approval you answer with Enter or Escape. The approval is bound to the exact edit, so nothing can change between what you heard and what runs;
  • scans for security problems (Bandit) before you approve, and reads the findings in the approval itself;
  • runs the program for real and speaks the exit code and the last line of output word for word, so errors like NameError: name 'pritn' is not defined. Did you mean: 'print'? are heard exactly;
  • checks accessibility for real with Echo Check: it opens a page and reports the actual accessibility tree instead of describing pixels.

"Artemis proves its results": every change is approved, every run is real, every report comes from the real thing.

How we built it

  • Core: Python + FastAPI on 127.0.0.1 with a fresh launch token per run, an event stream (SSE) to the client, and a policy gate that every tool call goes through (path checks, approvals bound to a hash of the change, secret redaction in logs, speech and anything sent out).
  • Agent: Claude with a small set of tools (write and edit files, run presets, scan, inspect a page). Text from files and web pages is wrapped as untrusted, so a prompt injection in a README can't approve anything.
  • Voice: push-to-talk with local faster-whisper (your voice never leaves the laptop), speech through NVDA or Windows SAPI, an optional natural ElevenLabs voice, earcons for listening, success and failure, and a hands-free "Hey Artemis" wake word (opt-in).
  • Client: a Tauri 2 desktop app built for NVDA first (live regions, focus management, an Enter guard so a background approval can't be accepted by a stray keypress), and a minimal GNOME Shell "island" for the Ubuntu demo that shows only states the core's events prove (listening, thinking, editing, running, speaking).
  • Process: four teammates, each with their own AI coding agents, coordinating on one GitHub issue board with owned lanes, reviews on every PR, CI on Windows and Ubuntu, and a secret scan on every branch.

Challenges we ran into

  • Making speech honest: a screen reader can't tell us when it is talking, so the wake word has to stay deaf to Artemis's own voice using only what Artemis knows about its own speech.
  • Approvals that can't be tricked: binding each approval to the exact diff, and making sure text from the project (READMEs, web pages) can never act as an instruction.
  • Accurate speech recognition for code: file names and symbols, with Whisper running locally on a laptop CPU.
  • Moving from Windows to Ubuntu mid-hackathon: venvs, screen readers (NVDA vs Orca), speech-dispatcher and GNOME 46 all behave differently.

Accomplishments that we're proud of

  • The full loop works by voice and keyboard alone: request, approve, write, scan, run, hear the result.
  • Secrets never leak: API keys stay out of logs, events, speech and anything sent to a cloud voice, with tests that try to leak them.
  • Over 800 automated tests across the core, voice and client, green on Windows and Ubuntu CI.

What we learned

Accessibility isn't a coat of paint: it decided our architecture (one event stream that is both spoken and shown), our safety model (keyboard-only approvals) and even what counts as "done" (the result must be provable, not described).

What's next for Artemis

  • Orca support on Ubuntu alongside NVDA on Windows.
  • Per-user voice settings in the app (voice, speed, engine), already in the core's API.
  • Hands-free mode by default once the wake word passes its real-room test.
  • Testing with blind developers, and shipping an installer.

Built With

Share this project:

Updates

Submission history