Agent In The Armchair — Real-Time Teams Voice Agent by Executive Mind

Executive Mind
Agent In The Armchair — director's chair with audio waveform
Executive Mind Product • Open Source (MIT) • v2 Streaming
Agent In The Armchair logo

AGENT IN THE
ARMCHAIR

Real-time streaming VTT + AI Agent for Microsoft Teams

Sits in your meetings, transcribes with speaker labels, speaks only when directly addressed. Invisible. Local. Free. No bot joins the meeting. Teams doesn't know it's there.

The Problem — Meeting AI Costs Money and Trust

Every "AI meeting assistant" on the market does the same thing: a bot joins your call, captures every word, ships it to a third-party cloud, and bills you per-seat per-month. Your conversation leaves your machine. Your data trains someone else's model. The vendor can read every confidential word, every private moment, every trade secret.

And the bot — it shows up. In the meeting. As a participant. "Hi, I'm Otter, can I record?" It changes the room. People self-censor. Off-the-record moments get recorded anyway. The whole dynamic shifts when a corporate eavesdropper has a seat at the table.

None of that is necessary. The microphone already hears the meeting. The audio already plays through your speakers. The LLM can already run on your GPU. The whole stack can be local, free, and invisible — if you build it that way.

The Solution — Hardware Capture, Local Inference, Zero Cloud

Agent In The Armchair doesn't ask Teams for permission. It listens to the audio your computer already plays — through a virtual audio cable (VB-Cable) — and mixes in your microphone. Teams never sees a bot. The meeting never knows. The transcript never leaves your machine.

A streaming pipeline picks up the mixed audio, runs Silero VAD to detect speech (silence is free), feeds it to faster-whisper for incremental transcription with word timestamps, then runs pyannote-audio every 10 seconds on a 16-second rolling buffer to attach speaker labels. The result: a live, labeled transcript on a local dashboard.

In Talk mode, a local LLM (Ollama) decides whether the agent is being directly addressed — not just mentioned, not just present. If yes, the TTS layer synthesises a response and plays it back into the meeting through CABLE-A. The TTS engine is pluggable — by default Piper (any of the free open-source voices, e.g. Alan / British RP, Aru, Northern English, US, etc.), or swap in Kokoro-82M for 54 voices across 8 languages with sub-real-time generation. If no, the agent stays silent. LLM gate, not keyword matching.

The Capture Layer

VB-Cable on Windows. ffmpeg amix meeting audio + local mic into one 16kHz mono PCM stream. No software hooks into Teams. No API access needed. The audio already plays through your speakers — Armchair just listens to the same stream.

The Intelligence Layer

Silero VAD → faster-whisper (CUDA) → pyannote speaker diarization (CUDA) → Ollama LLM gate → pluggable local TTS (Piper, Kokoro, or any compatible engine). Every component runs on local hardware. NVIDIA GPU strongly recommended. No third-party APIs.

Features

🎙️

Real-Time Streaming VTT

Silero VAD detects speech and skips silence (nearly free on GPU). faster-whisper with incremental transcription and word timestamps. ~0.3s end-to-end latency in Listen mode.

👥

Speaker Diarization

pyannote-audio on a 16s rolling buffer (runs every 10s). Per-segment speaker labels matched to Whisper word timestamps. Handles mid-utterance speaker switches. Name speakers in the dashboard — labels apply retroactively.

🗣️

Talk / Listen Mode

🔇 Listen: pure VTT with speaker labels. 🎤 Talk: VTT + LLM + TTS — agent responds when directly addressed. The LLM decides "direct address vs mention" and returns [SILENCE] for mentions. No keyword matching.

🇬🇧

Pluggable Local TTS

Default: Piper — pick any of the free open-source voices (Alan / British RP, Aru, Northern English, US, etc.). Or swap in Kokoro-82M for 54 voices across 8 languages with sub-real-time generation. Both local, both free, both no API keys. Voice selectable from the dashboard dropdown.

🖥️

Live Web Dashboard

Local browser dashboard at http://localhost:8765. Live labeled transcript, speaker naming, agent name config, mode toggle (Listen / Talk), voice selection. No cloud, no auth, no telemetry.

📁

Session Archiving

Each session archived to its own folder: transcript.txt, speaker_names.json, detected_speakers.json, audio.raw. Clean start each time — no bleed between sessions. Ctrl+C stops and saves.

One-Click Launcher

Double-click start_armchair.bat — audio capture, dashboard, browser, and pipeline all start. No manual orchestration. Windows-native.

🫥

Invisible to Teams

No bot joins the meeting. No API access. No participant slot. No "Hi, I'm recording." Hardware audio capture only. Teams cannot block it because Teams doesn't know it exists.

💸

Zero Per-Hour Cost

No subscriptions. No API keys. No cloud bills. No per-seat pricing. One-time setup, infinite meetings. The GPU is already on your desk.

Latency

Built for real-time conversation, not batch transcripts. The numbers below are the actual pipeline timings on a single NVIDIA workstation.

VAD (Silero) ~0ms (nearly free)
Whisper (CUDA) ~0.3s
pyannote (CUDA) ~1.5s (every 10s)
LLM gate (Ollama) ~1-2s
Piper TTS ~1s (any Piper voice)
Audio playback ~0.5s
Total (Listen mode) ~0.3s
Total (Talk mode) ~3-4s

Tech Stack

Audio Capture (Windows) VB-Cable (CABLE-A) + ffmpeg amix
VAD Silero VAD
Transcription faster-whisper (CUDA, incremental)
Speaker Diarization pyannote-audio (CUDA, 16s rolling buffer)
LLM (Talk mode) Ollama (local, http://localhost:11434)
TTS (Talk mode) Piper (any voice) · Kokoro-82M (54 voices / 8 langs)
Dashboard Local HTTP server (localhost:8765)
Runtime Python 3.12+ (WSL) + Windows ffmpeg
Launcher start_armchair.bat (Windows)
License MIT (Open Source)

Why This Is an Executive Mind Product

Every product we ship is built on the same principle: own the stack. No SaaS vendor in the middle. No per-hour billing. No third-party model reading your private conversations. If we wouldn't run it on our own workstation, we don't ship it.

Agent In The Armchair is part of The Pack — the same architecture that runs Executive Mind's own operations. If it can't survive our own meetings, it doesn't ship. If it can't run on a single NVIDIA workstation, it doesn't ship. The bar is what we trust for ourselves.

The marketing copy says "Invisible. Local. Free." That's not a tagline. It's a constraint. Every component of the pipeline is local. Every model runs on your hardware. The MIT license means zero per-hour cost. The architecture means Teams can't see it. Those aren't features — they're the design brief.

Get Agent In The Armchair

Open source (MIT). No subscriptions. No per-hour billing. Clone the repo, run start_armchair.bat, and the agent is in the room — listening.

View on GitHub →

Built by Kris Racette • Released under MIT • Source available on GitHub

About the Developer

Kris Racette (also known as Kristopher Racette and Kristopher Marc Racette) is the Founder of Executive Mind and the creator of Agent In The Armchair. With 18+ years of accounting experience and a Master of Commerce from the University of New South Wales, Kris brings the same engineering rigour to local AI systems that he brings to financial architecture.

Agent In The Armchair is part of The Pack — the open-source ecosystem built and run by Executive Mind. Gym Tracker handles the data athlete. ColdStack handles the crypto vault. Armchair handles the meeting room. Same philosophy across all three: local, open, no lock-in, your hardware, your data.

The source code is available for audit and contribution on GitHub. Executive Mind believes the same thing about meeting audio as it does about training data and vault data: inspectable, portable, and yours.