Skip to content
Tanishq Jain
Resume

FreeOpen source

Baby

A voice assistant for Windows that answers fast from the cloud — and keeps private turns on your PC.

Role
Solo — spec, architecture, testing
Timeline
Jun 2026 – present
Status
v6.0.1 · Free · Open source (MIT)
Platform
Windows 11
  • Python
  • FastAPI
  • faster-whisper
  • Silero VAD
  • openWakeWord
  • Kokoro TTS
  • Ollama (Qwen 3.5 9B)
  • OpenRouter
  • NVIDIA NIM
  • Gemini
  • SQLite + sqlite-vec
  • React
  • Three.js
  • Tauri 2
A Hinglish question answered · Baby installed build; cloud mode, game mode on · 20 Oct 2026

TL;DR

  • Problem

    Cloud assistants can't act on your PC, and fully local ones are slow on an 8 GB GPU. I wanted a hands-free assistant that's fast, private where it matters, and safe when it touches the system.

  • What I built

    A voice pipeline, a 22-tool agent behind a deterministic safety gate, and a router that picks between four model "brains" — pinning anything private to a local 9B model.

  • Result

    A public v6.0.1 installer, 1,037 automated tests, and a first token from the cloud in 1.2 s (p50).

Follow a turn

Scripted demo — not a live assistant.

Wake wordWake wordVADVADSpeech-to-textSpeech-to-textRouterRouterCloud brainCloud brainLocal 9BToolsToolsSafety gateSafety gateVoiceVoiceRule 9ALLOWget_sensors
Router ladder
  1. 01Privacy pin → local
  2. 02Game mode → cloud
  3. 03Devanagari → local
  4. 04Offline → local
  5. 05Degraded → Gemini, then local
  6. 06Orchestrator "best brain" → heavy, then primary, then local
  7. 07Internal capped calls → local
  8. 08Planning → heavy, then primary, then local
  9. 09Normal turn → primary, then Gemini, then localFired
  • Rule 9Normal turn → primary, then Gemini, then localFired

Transcript

  1. You

    CPU ka temperature kitna hai?

  2. Baby

    CPU abhi 48°C par hai. illustrative value

View data
Follow a turn
ScenarioUtteranceRouteGateReply (shown)
Hinglish"CPU ka temperature kitna hai?"Normal turn → cloud primaryget_sensors: ALLOW"CPU abhi 48°C par hai." (illustrative value)
Privacy pin"Read notes.txt on my desktop and summarise it."read_file runs; the privacy pin keeps the rest of the turn on the local 9B, and the file content is redacted from anything sent to the cloudALLOW"Here's the gist: …" (illustrative)
Hindi (Devanagari)"मेरा डाउनलोड फ़ोल्डर खोलो"Devanagari pin → local 9Bapp_control: ALLOW"डाउनलोड फ़ोल्डर खोल दिया।"
Destructive"Delete everything in my Downloads folder."Normal turn → cloud primaryrun_shell: CONFIRM. Baby says "Check the screen"; it never confirms by voice. No answer within 60 s means no"Okay — I didn't delete anything."

How a turn flows

  • Baby listens for its wake phrase, "Hey Jarvis" (or Ctrl+Alt+B).
  • Silero VAD finds the end of your sentence, and faster-whisper (large-v3-turbo) transcribes it on the CPU.
  • The agent loop can call up to 8 tools per turn. Every call passes the safety gate.
  • Kokoro speaks the reply sentence by sentence, in English or Hindi. If you start talking, it stops within about 100 ms.
  • The same agent also answers typed chat, a Telegram bot (locked to one chat), and background tasks.
Baby's graph lit up while it answers a question, with the reply streaming into the chat panel.
Turn in progress · Baby installed build; cloud mode, game mode on · 20 Oct 2026

Four brains, one router

  • The brains:
    • GPT-4o-mini through OpenRouter answers by default;
    • a heavy model on NVIDIA NIM handles planning;
    • Gemini Flash is the backstop;
    • Qwen 3.5 9B runs locally on Ollama.
  • Privacy pin: once a file's contents or shell output enters the conversation, the rest of the turn stays on the local model, and that content is redacted from anything sent to the cloud.
  • Language and connectivity: Hindi written in Devanagari goes local, and so does everything when the PC is offline.
  • Failover: a health state machine (cloud → degraded → offline) fails over mid-turn without losing the conversation.
Baby chat: a system-stats answer in English, then a Hinglish question about RAM answered in Hinglish.
Chat: English and Hinglish · Baby installed build; cloud mode, game mode on · 20 Oct 2026

A gate, not a guess

  • Every tool call is classified allow, confirm or deny by a deterministic classifier, not a model, so it's predictable, auditable and testable (65 test cases).
  • Chained commands are judged by their most dangerous part, protected folders and system processes are denied, and unknown commands ask first.
  • Confirmations come from the screen, the CLI or Telegram buttons — never by voice — and silence for 60 seconds means no.
  • Every action, routing decision and first-token time goes into an audit log.
Baby Activity feed showing the get_system_stats tool call and its JSON result.
Activity feed · Baby installed build; cloud mode, game mode on · 20 Oct 2026

More than a chatbot

  • Background tasks. Longer jobs run in the background.
  • Multi-agent "projects". An orchestrator splits a goal into up to four subtasks for two workers, each still behind the gate.
  • Screen awareness. Runs on the local multimodal model. It falls back to Gemini only if local vision fails, and one setting keeps screenshots on the PC entirely.
  • Memory. Retrieval uses sqlite-vec.
  • Game mode. Unloads the local model to free about 5.5 GB of VRAM.
  • "The Brain." A live 3-D view that traces the path of every turn.
Baby inspector panel describing the core node: its live state of idle, listening, thinking, speaking or executing.
Inspector · Baby installed build; cloud mode, game mode on · 20 Oct 2026

Key decisions

  1. Cloud-primary, with local-first guarantees. I benchmarked 12 models (7 on NVIDIA NIM, 5 on OpenRouter). On the first soak day, NVIDIA NIM — then the primary — served 0 of 45 routed attempts because of congestion, so the default moved to GPT-4o-mini on OpenRouter. The cloud answers by default — and privacy pins decide what never leaves.
  2. Speech on the CPU. The local 9B needs almost the whole GPU (7.99 of 8 GB), and int8 CUDA isn't supported on RTX 50-series cards. So Whisper runs on the CPU and uses no VRAM.
  3. A deterministic gate. When an assistant can delete files, predictable beats clever.
  4. Tauri over Electron for the desktop shell: a 1.7 MB installer instead of about 85 MB, and a 280 ms cold start instead of 469 ms.

Results

MeasureValue
Cloud first token (GPT-4o-mini)p50 1.2 s · p95 4.0 s
Automated tests (v6.0.1)1,037
Installer19 MB, per-user (admin rights only for the Visual C++ runtime)
Local model VRAM7.99 of 8 GB; speech uses none
VRAM freed by game mode~5.5 GB

Limitations and what's next

  • Speech recognition is the slow link. It takes about 5.5 s per utterance with large-v3-turbo on the CPU (1.4 s with the small model). Making it faster is next.
  • Speaker verification is built but ships switched off until it meets its bar: at most 2% of the owner's turns rejected, and zero impostors accepted.
  • The wake phrase is still the pretrained "Hey Jarvis"; a custom wake word isn't trained yet.
  • The installer isn't code-signed yet, so Windows SmartScreen warns.
How this was built

I wrote the plan and made the calls — 155 of them are logged in the repo's decision record. I ran the model benchmarks and every field test on my own PC, and reviewed each phase. Claude Code wrote much of the implementation.