Home Assistant Core is the open-source home automation platform that powers millions of smart homes. It provides a unified event-driven architecture for integrating, controlling, and automating IoT devices, services, and voice assistants. The system runs as a Python async application with a modular component system: each integration (e.g., lights, sensors, climate, locks) is a self-contained Python package under `homeassistant/components/`, following a consistent pattern of config entries, data update coordinators, and entity platforms. Key entry points include the CLI (`hass`), the web-based frontend (served via aiohttp), WebSocket API, and REST API. Data flows are event-driven: state changes, service calls, and automation triggers propagate through a central bus. External dependencies include hundreds of third-party libraries for device communication (BLE, Zigbee, Z-Wave, MQTT, HTTP), cloud services (Nabu Casa, Google Assistant, Alexa), and media playback (Cast, DLNA). The architecture is a monolith with a plugin system, not microservices, but supports horizontal scaling via separate instances and the 'recorder' component for persistent state history.
This repository is a Home Assistant custom component that adds OpenAI-compatible text-to-speech to a HA instance. It is distributed as an integration for HACS and registered as a config-flow service integration. In production it exposes TTS entities, an `openai_tts.say` service that announces text to media players with automatic volume save/restore and optional chimes, and an `openai_tts.set_api_key` service for credential rotation. The architecture is a HA integration split into focused modules: config flow and profile subentries, a streaming TTS engine, a sentence-level audio pipelining layer, an ffmpeg-based loudness pipeline, push-driven API health tracking, cache and validation logic, repairs, diagnostics, and a large announcement orchestration module. Provider support is driven by declarative presets for OpenAI, Mistral, Groq, Lemonfox, Kokoro, Chatterbox, and custom OpenAI-compatible endpoints, and the code intentionally modern-targets HA's streaming TTS contract rather than retaining legacy fallback paths.
AgentScope is a full-stack, production-grade multi-agent orchestration platform. The core library (`src/agentscope/`) provides a FastAPI-based agent service with CRUD endpoints for agents, sessions, credentials, channels, knowledge bases, schedules, and SOPs. It features a modular middleware onion pattern for agent lifecycle hooks (reply, reasoning, acting, tool execution), a pluggable storage abstraction (Redis, SQL with Alembic migrations, S3 blob store), and a message bus (in-memory or Redis) for inter-session communication and distributed coordination. The system supports real-time voice (WebRTC, DashScope/OpenAI/Gemini/xAI), RAG pipelines with document parsing and vector stores (Qdrant, Milvus, MongoDB, Elasticsearch), channel integrations (Feishu, DingTalk, Discord), and sandboxed workspace backends (Docker, Kubernetes, E2B, Daytona, Apple Containers, Bubblewrap, OpenSandbox). A full React/TypeScript web UI (`examples/web_ui/frontend`) provides chat, channel management, schedule calendar, knowledge base browsing, and MCP hub browsing. Additionally, a terminal console and a goal-oriented pipeline are provided for developer workflows. The framework emphasizes transparency, controllability, and separation between agent logic and infrastructure, supporting multi-agent collaboration, human-in-the-loop permissions, and long-term memory via ReMe and mem0 middleware.
Universal Notifier is a Home Assistant custom integration that acts as a centralized notification router. It exposes a single `universal_notifier.send` service that fans out messages to multiple channelsβtext (Telegram, mobile app) and voice (Alexa, Google Home via TTS)βwith context-aware features: time-of-day greetings, per-slot volume control, weekday/weekend Do Not Disturb schedules, priority bypass, and a FIFO async queue for serialized voice announcements. The integration also provides monitoring entities (volume sensor, family presence sensor, DND binary sensor) and runtime controls (priority volume select, text format select, voice buffer number, DND override switch, last-message text). Configuration is fully UI-driven via a multi-step config flow and an options menu for post-setup edits. Architecturally, the component is a typical Home Assistant custom component with modular entity platforms (sensor, binary_sensor, select, number, switch, text) and a core `__init__.py` that registers the service, manages the voice queue worker, and handles snapshot/resume of media players. The code is well-organized, uses standard HA patterns (config entries, entity registry, service registrations), and includes a solid test suite with high coverage. The main service handler is long and somewhat monolithic, but it is subdivided into labeled sections and handles many edge cases (e.g., `notify.send_message` target kwargs, Telegram chat IDs, MarkdownV2 escaping, SSML preservation for TTS). The utils module contains genuinely reusable text-processing and time-slot helper functions. Dependencies are minimal (only HA core), and the project uses `uv` for Python management and CI with GitHub Actions (tests, HACS validation, hassfest). It targets Python 3.13+ and requires HA 2025.12.1 or newer, indicating an up-to-date stack. External integrations like Telegram, Alexa Media Player, or TTS must be installed separately; this component merely routes to them. The repository is actively maintained with frequent releases and a changelog, and it supports multiple languages (READMEs and translations).
This repository implements a Linux-based voice satellite for Home Assistant, acting as a local voice assistant that connects to Home Assistant via the ESPHome protocol (aioesphomeapi). The application runs as a Python asyncio service, handling wake word detection using TensorFlow Lite models (MicroWakeWord and OpenWakeWord), audio input via the soundcard library, audio output via libmpv, and optional WebRTC noise suppression/gain. It also provides a WebSocket-based Peripheral API (port 6055) that allows external hardware controllers (LED rings, buttons, HAT boards) to register entities and receive real-time state events. The system is deployed via Docker with docker-compose and includes example peripheral implementations for devices like the ReSpeaker HATs, Jabra Speak 410, and Satellite1 HAT. The architecture is modular, with separate modules for the ESPHome API server (api_server.py), core voice pipeline protocol (satellite.py), entity management (entity.py), wake word loading (wake_word.py), audio playback (player/libmpv.py), and peripheral integration (peripheral_api.py). The application is configured via environment variables and command-line arguments, with preferences persisted to a JSON file. The codebase includes unit tests for most modules, CI/CD workflows, and a Docker build pipeline. External dependencies include aioesphomeapi, websockets, soundcard, python-mpv, webrtc-noise-gain, pymicro-wakeword, pyopen-wakeword, and zeroconf. Key data flows: Microphone audio is captured, optionally processed by WebRTC for noise suppression and gain, then fed into wake word detection. Upon wake word detection, the voice pipeline sends audio to Home Assistant for speech recognition and intent handling. Responses (TTS, media) are received and played via MPV. The Peripheral API allows external hardware to send button events and receive state changes (e.g., listening, thinking, muted). The system supports multiple wake words, stop word detection, timers, and media playback with playlist support.
This repository provides an ESP-IDF component framework (esp-openclaw-node, esp-openclaw-talk, esp-openclaw-room-node) for building IoT devices that connect to the OpenClaw gateway via WebSocket. It implements device identity (Ed25519), session persistence, command dispatch, and WebRTC audio (Talk). The room-node component adds a full voice-interactive display client with LVGL-based animated face, Canvas (image/A2UI rendering), camera snapshot, file access, and real-time diagnostics. The codebase includes multiple board-specific examples (M5Stack Tab5, Waveshare AMOLED, ESP-BOX-3, M5Stack Dial) that demonstrate reuse of the core components. Strong engineering practices are evident: extensive host-based unit tests (with fake SDK headers), CI pipelines that verify cryptographic signatures and component patches, firmware packaging with provenance manifests, and a component registry release process for versioned distribution. The architecture cleanly separates concerns via board adapter abstractions and config structs, making the core components reusable across different ESP32 hardware.
Clawgo is a minimal headless Go client node for the Clawdbot voice assistant gateway. It connects to a bridge over TCP, handles pairing and authentication, then streams voice transcripts from stdin, a FIFO, or a subprocess STT engine (brabble) as `voice.transcript` or `agent.request` events. It supports bidirectional chat: it can subscribe to chat events and speak responses via local TTS (espeak-ng or custom command) through a serialized speech queue. The node advertises itself via mDNS and supports configurable routing plugins for pre-processing transcripts (e.g., quick actions like 'telegram ping'). The architecture is a single binary with a reconnection loop, context-cancellable waits, and graceful shutdown on SIGINT/SIGTERM. The codebase demonstrates solid Go practices: clean separation of concerns, a plugin registry for routing policies, a thread-safe TTS queue that cancels active speech on disconnect, and careful handling of external subprocess stdout/stderr.
This is an embedded firmware application for ESP32-based AI voice assistant devices. The code implements a full voice interaction pipeline: microphone input via I2S/PCM, Opus audio encoding/decoding, WebSocket/MQTT communication with a server, wake-word detection (ESP-SR), an LVGL-based user interface with emoji and chat display, an MCP (Model Context Protocol) server exposing device tools to the AI, and support for OTA updates. The architecture is a monolithic FreeRTOS application using ESP-IDF, with a strong board abstraction layer that allows support for over 130 hardware variants (ESP32-S3, C3, C6, P4, etc.) with different audio codecs, displays, cameras, and network modules (WiFi, 4G, Ethernet). The codebase is actively maintained with regular commits and a large community, but suffers from significant code duplication across board definitions, especially in power management and display initialization, which increases maintenance burden.
This repository is a Next.js application demonstrating the use of the OpenAI Realtime API via WebRTC for real-time voice interaction with a 3D solar system scene built in Spline. The application allows users to ask questions about the solar system, moons, the ISS position, and data visualizations, which trigger function calls to update the 3D scene or display charts in the UI. The architecture consists of a frontend built with React and Next.js, featuring components for the 3D scene (using @splinetool/react-spline), controls for managing the WebRTC connection, and a debug log. Two API routes proxy requests to external services: one for fetching the ISS position and another for obtaining ephemeral client secrets from the OpenAI Realtime API. The frontend establishes a WebRTC connection to OpenAI, sends audio input, and processes function call responses to trigger animations in the Spline scene or update the UI with charts. A notable reusable component is the charting system located in `components/charts/chart.tsx`, which provides a set of theme-aware, flexible charting components (Container, Tooltip, Legend) that abstract the complexity of integrating Recharts and Chart.js with Tailwind CSS. This component demonstrates a clean separation of concerns and can be adapted for use in other projects with minimal modification. The rest of the codebase is tailored to the solar system demo but follows modern React and Next.js best practices, including TypeScript strict mode, proper error handling, and modular organization. The application is actively maintained, with recent commits and up-to-date dependencies, and exhibits low technical drift, adhering to current web standards and APIs.
This is the server platform for the XiaoZhi (ε°ζΊ) ESP32 voice-assistant ecosystem: a large multi-component monorepo that turns low-cost ESP32 hardware into an AI voice assistant. The core is a Python asyncio service (main/xiaozhi-server) that maintains WebSocket connections with devices and runs a real-time audio pipeline β VAD, ASR, intent/LLM orchestration, tool calling, and TTS β streaming audio back to the device. Device onboarding, OTA firmware updates, and the WebSocket handshake are partly in the Python server and partly in a Java Spring Boot management API (main/manager-api) backed by MySQL + Redis, which exposes a broad admin surface: users, devices, agents, model-provider configuration (LLM/ASR/TTS/VAD/memory/intent), RAGFlow-backed knowledge bases, voice clone, voiceprint, chat history, and MCP tool management. Two management frontends exist (a Vue 2 web console and a uni-app/Vue 3 mobile app), plus a Live2D digital-human web client and an offline theme generator for firmware assets. It is an application, not a research repository β no notebooks, data pipelines, or analytical datasets; the 'data' features (RAG ingestion, voice cloning, chat-history reporting, performance testers) are all operational application features.
AgenticSeek is a private, local autonomous AI assistant built as an alternative to Manus AI. The system features a multi-agent architecture with six specialized agents (Casual, Coder, File, Browser, Planner, MCP) selected by a hybrid router using BART zero-shot classification and an adaptive few-shot classifier. It provides a React frontend, FastAPI backend with Celery, CLI with voice support, and Docker Compose orchestration for self-hosted services including SearxNG search and Redis caching. The codebase demonstrates solid engineering with clean abstractions for LLM providers (14+ options), tool execution, browser automation, and workspace isolation. It is under active development but shows signs of technical drift in deprecated components (llm_server, SerpApi-based web search) and fragile browser automation. The architecture is modular and contains several reusable patterns, though the codebase is tightly coupled to its specific agent system and has substantial external dependencies.
This repository is a collection of Home Assistant blueprints (YAML automation and script templates) that enable voice-controlled music playback via the Music Assistant integration. It provides three distinct options: a fully local intent-based automation using custom conversation triggers, an LLM-enhanced automation that leverages an external LLM conversation agent to parse natural language queries, and an LLM script that can be used as a tool by LLM conversation agents for more flexible music requests. The blueprints are well-structured with multi-language support (English, Dutch, French, German, Hungarian, Italian, Portuguese, Slovak, Spanish, Finnish) and demonstrate advanced use of Home Assistant's conversation triggers, Jinja2 templating, and integration with Music Assistant's play_media service. The repository is community-driven and actively maintained, with detailed documentation and changelogs. While tightly coupled to Home Assistant and Music Assistant, the blueprints exhibit good craftsmanship in handling target resolution, shuffle logic, and LLM prompt engineering.
This repository implements a local AI assistant for Windows with a focus on privacy and offline operation. The application features a modern Qt-based GUI with multiple tabs for chat, planning, briefing, home automation, and web search. It includes a voice pipeline with wake word detection ('jarvis'), speech-to-text, intent classification via a fine-tuned FunctionGemma model, local LLM inference through Ollama, and text-to-speech using Piper TTS. Core functionalities encompass smart home control (TP-Link Kasa), calendar/task management, weather/news aggregation, and system monitoring. The architecture is modular, separating concerns into core services (LLM, router, function execution, voice assistant) and GUI components, with communication via Qt signals and slots. Data is stored locally in SQLite databases. The project demonstrates thoughtful engineering in areas like reactive settings management, model persistence for VRAM optimization, and reusable UI components, though it maintains some Windows-specific dependencies and tight coupling in certain areas.