explaingit

dnhkng/glados

5,545PythonAudience · developerComplexity · 4/5Setup · hard

TLDR

A Python project that builds a real-world voice AI modeled on the sardonic Portal game character, it listens, watches through a camera, speaks unprompted, and tracks emotions using psychology models.

Mindmap

mindmap
  root((repo))
    What it does
      Voice AI personality
      Proactive speech
      Emotion tracking
    Agents
      Vision agent
      Memory agent
      Weather and news
    Tech Stack
      Python
      Custom TTS model
      Speech recognition
    Use Cases
      AI companion
      Home automation
      Ambient AI assistant
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a physically present AI companion that speaks out loud and reacts to what it sees through a camera without needing a wake word.

USE CASE 2

Use the multi-agent architecture as a starting point for an ambient AI that can initiate conversation based on context it observes.

USE CASE 3

Run a voice-controlled home automation assistant on a small single-board computer using the included 8GB branch.

Tech stack

Pythontext-to-speechspeech recognitionMCP

Getting it running

Difficulty · hard Time to first run · 1day+

Requires a microphone, camera, speaker, and a running LLM backend, custom TTS model adds significant first-run setup time.

License not specified in the explanation.

In plain English

GLaDOS is a Python project that builds a real-world voice AI modeled on the sardonic, passive-aggressive AI character from Valve's Portal video game series. The goal is a system that listens through a microphone, watches through a camera, speaks through a speaker, and behaves with the character's distinct personality rather than being a neutral assistant. The system is built as a collection of cooperating agents. Specialized background agents handle vision, emotion tracking, memory, weather, and news. A shared context object collects what these agents observe. The main language model reads that context on each cycle and decides whether it has something worth saying. Unlike most voice assistants, there is no wake word: the system can speak unprompted if it judges it has something to add. Speech response time was a central design concern. The author targeted round-trip latency under 600 milliseconds, which required training a custom text-to-speech model tuned to sound like the character and cutting time from every stage of the audio pipeline. Speech recognition, interruption handling, and audio playback each run on separate threads with a priority queue ensuring user input always jumps ahead of the autonomy loop. The personality is modeled using two frameworks from psychology: the PAD model (Pleasure, Arousal, Dominance) gives the system a reactive emotional state that shifts moment to moment, while HEXACO personality traits provide a stable character that persists across sessions. Long-term memory stores facts, preferences, and conversation summaries. An observer agent monitors behavior and adjusts responses within preset bounds. The project also supports MCP tools for home automation and other integrations, and includes a branch that runs on an 8GB single-board computer. The README is detailed and in English.

Copy-paste prompts

Prompt 1
I'm running the GLaDOS Python project. How do I swap the LLM backend for a local Ollama model while keeping the same voice pipeline and sub-600ms latency?
Prompt 2
Using the GLaDOS codebase, add a new background agent that polls a calendar API and speaks upcoming events when the user is idle.
Prompt 3
Explain how the PAD emotional model works in GLaDOS and show me how to tune the pleasure and dominance parameters to make the personality less aggressive.
Prompt 4
I want to deploy GLaDOS on a NanoPi board with 8GB RAM. Help me find which branch supports this and reduce TTS model size to fit memory.
Open on GitHub → Explain another repo

← dnhkng on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.