Skip to content

Case study

Igris — voice-first AI agent

Speak to it, and it actually does the thing.

Role
Sole developer
Stack
Node.js, Express, React, Vite, Tailwind, Framer Motion, Gemini, Groq Whisper, ElevenLabs
Year
2026
A ring of thin strokes cycling through three states — idle, listening, speaking. One stroke turns orange at the moment a tool call fires.
idle → listening → speaking · the orange stroke marks a tool call

The problem

Voice assistants answer questions. I wanted one that performs work — reads and writes files, runs commands, searches the web, opens what I need — from a spoken sentence, with no typing.

The decisions

  1. 01

    Three providers, each for what it is best at.

    Groq Whisper for transcription because it is fast and handles Roman Urdu mixed with English, which is how I actually speak. Gemini for reasoning and deciding which tool to call. ElevenLabs for a voice that does not sound like a screen reader. One provider for all three would have been simpler and worse at every step.

  2. 02

    Tool-calling, not intent matching.

    The model decides which tool a request needs rather than matching against a list of phrases. This is why “check what is in the config file and tell me if the port is right” works without anyone having written a rule for it.

  3. 03

    Barge-in.

    You can interrupt it mid-sentence. Without this, every slightly wrong answer costs you the full length of the reply, and the assistant becomes annoying to use. It is a small feature that decides whether the thing is usable at all.

  4. 04

    Security boundaries from the first commit.

    File access is confined to the workspace directory. Terminal commands run against an allowlist — npm, node, git, dir, cd, echo — and nothing else. An agent that can run arbitrary shell commands is not a feature, it is a liability.

  5. 05

    Provider fallback.

    API quotas run out at the worst moment. When a provider fails, it falls through to an alternative rather than dying.

Igris mid-conversation, showing its voice interface.

What I would tell you honestly

It is a voice assistant first. Command execution is deliberately narrow, and which spoken languages work well depends on the configured Whisper and ElevenLabs models.