Lucia is an open-source, privacy-focused AI assistant for Home Assistant users.
10K+
Lucia (pronounced LOO-sha) is an open-source, privacy-focused AI assistant that serves as a complete replacement for Amazon Alexa and Google Home. Built on the Microsoft Agent Frameworkโ with a multi-agent architecture, Lucia provides autonomous whole-home automation management through deep integration with Home Assistant.
| Platform | Status |
|---|---|
| Azure OpenAI / AI Foundry | โ Supported |
| OpenAI | โ Supported |
| Ollama | โ Supported |
| Anthropic (Claude) | โ Supported |
| Google Gemini | โ Supported |
| Azure AI Inference | โ Supported |
| OpenAI-compatible (Open Router, etc.) | โ Supported |
Create a docker-compose.yml:
services:
lucia-redis:
image: redis:8.2-alpine
container_name: lucia-redis
networks: [lucia-network]
ports: ["127.0.0.1:6379:6379"]
command: >
redis-server --appendonly yes
--maxmemory 256mb --maxmemory-policy allkeys-lru
volumes: [lucia-redis-data:/data]
healthcheck:
test: ["CMD", "redis-cli", "PING"]
interval: 30s
timeout: 10s
retries: 3
restart: unless-stopped
lucia-mongo:
image: mongo:8.0
container_name: lucia-mongo
networks: [lucia-network]
ports: ["127.0.0.1:27017:27017"]
volumes: [lucia-mongo-data:/data/db]
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.runCommand('ping').ok"]
interval: 30s
timeout: 10s
retries: 3
restart: unless-stopped
lucia:
image: seiggy/lucia-agenthost:latest
container_name: lucia
depends_on:
lucia-redis: { condition: service_healthy }
lucia-mongo: { condition: service_healthy }
networks: [lucia-network]
ports: ["7233:8080"]
environment:
- ASPNETCORE_ENVIRONMENT=Production
- ASPNETCORE_URLS=http://+:8080
- ConnectionStrings__luciatraces=mongodb://lucia-mongo:27017/luciatraces
- ConnectionStrings__luciaconfig=mongodb://lucia-mongo:27017/luciaconfig
- ConnectionStrings__luciatasks=mongodb://lucia-mongo:27017/luciatasks
- ConnectionStrings__redis=lucia-redis:6379
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://localhost:8080/health || exit 1"]
interval: 30s
timeout: 10s
retries: 3
restart: unless-stopped
networks:
lucia-network:
driver: bridge
volumes:
lucia-redis-data:
lucia-mongo-data:
Start the stack:
docker compose up -d
Open the Dashboard at http://localhost:7233 โ the setup wizard will guide you through configuration.
| Image Tag | GPU | Size | Use Case |
|---|---|---|---|
seiggy/lucia-agenthost:latest | None | ~250MB | Base orchestration (no voice) |
seiggy/lucia-agenthost:voice | NVIDIA CUDA 12.8 | ~3GB | Voice + NVIDIA GPU acceleration |
seiggy/lucia-agenthost:voice-cpu | None | ~3GB | Voice with CPU-only inference |
seiggy/lucia-agenthost:ha-mono | None | ~350MB | Home Assistant add-on (mono-container) |
To use voice variants, change the image in your docker-compose.yml:
# NVIDIA GPU (requires nvidia-container-toolkit)
image: seiggy/lucia-agenthost:voice
# CPU only (no GPU requirements)
image: seiggy/lucia-agenthost:voice-cpu
AMD ROCm: Not published to Docker Hub (~25GB). Build locally:
docker build -t lucia:voice-rocm -f infra/docker/Dockerfile.voice-rocm .
The ha-mono variant runs with no external dependencies โ no Redis, no MongoDB. Uses in-memory caching and SQLite for persistence.
docker run -d \
--name lucia \
--network host \
-v lucia-data:/data \
-v lucia-models:/app/models \
lucia:ha
| Mount Point | Purpose | Required |
|---|---|---|
/data | SQLite database โ all config, traces, tasks | Yes |
/app/models | Wyoming voice models (STT, VAD, wake word) | Recommended |
/app/plugins | Script plugins | Optional |
| Port | Protocol | Purpose |
|---|---|---|
| 8099 | HTTP | Web dashboard and REST API |
| 10400 | TCP | Wyoming voice protocol |
| Variable | Purpose |
|---|---|
ConnectionStrings__luciatraces | MongoDB connection for traces |
ConnectionStrings__luciaconfig | MongoDB connection for configuration |
ConnectionStrings__luciatasks | MongoDB connection for tasks |
ConnectionStrings__redis | Redis connection string |
| Variable | Default | Description |
|---|---|---|
DataProvider__Cache | InMemory | Cache backend (InMemory or Redis) |
DataProvider__Store | SQLite | Persistence backend (SQLite or MongoDB) |
DataProvider__SqlitePath | /data/lucia.db | SQLite database file path |
| Configuration | Cache | Store | Use Case |
|---|---|---|---|
| Default | Redis | MongoDB | Full deployment with dedicated infrastructure |
| Lightweight | InMemory | SQLite | HA add-on, single-container, resource-constrained |
| Hybrid | InMemory | MongoDB | Reduce infra while keeping durable document store |
Skip the setup wizard by providing all required values via environment variables:
| Variable | Purpose |
|---|---|
DASHBOARD_API_KEY | Dashboard login key (e.g. lk_...) |
HOMEASSISTANT__BASEURL | Home Assistant URL (e.g. http://homeassistant.local:8123) |
HOMEASSISTANT__ACCESSTOKEN | Long-lived access token from HA |
LUCIA_HA_API_KEY | Optional: API key for the HA integration |
MUSICASSISTANT__INTEGRATIONID | Optional: HA Music Assistant config entry ID |
| Variable | Purpose |
|---|---|
SEARXNG_URL | General Agent gets web_search tool (SearXNG instance URL) |
METAMCP_URL | Seed MetaMCP as an MCP tool server |
METAMCP_API_KEY | Optional: Bearer token for MetaMCP |
| Variable | Default | Description |
|---|---|---|
HomeAssistant__BaseUrl | โ | HA instance URL |
HomeAssistant__AccessToken | โ | HA long-lived access token |
Home Assistant โ Lucia Custom Component โ JSON-RPC โ AgentHost
โโโ Orchestrator (Router โ Dispatch โ Aggregator)
โ โโโ LightAgent
โ โโโ ClimateAgent
โ โโโ SceneAgent
โ โโโ ListsAgent
โ โโโ GeneralAgent
โโโ A2AHost (MusicAgent, TimerAgent)
โโโ MongoDB (traces, config, tasks)
โโโ Redis (session cache)
โโโ React Dashboard
| Mode | Value | Description |
|---|---|---|
| Standalone (default) | standalone | All agents embedded in AgentHost. Single container + Redis + MongoDB (or zero-dependency with HA image). |
| Mesh | mesh | Agents run as separate A2A containers. For Kubernetes or multi-node. |
environment:
- Deployment__Mode=mesh
โ ๏ธ Single-Instance Constraint: AgentHost must run as a single instance โ no horizontal scaling via replicas. In-memory stores hold active alarms and timers.
# Using manifests
kubectl apply -f infra/kubernetes/manifests/
# Using Helm
helm install lucia infra/kubernetes/helm/lucia-helm \
--namespace lucia --create-namespace
https://github.com/seiggy/lucia-dotnet โ Download "Lucia" โ Restart HA โ Add Integrationcustom_components/lucia to your HA config โ Restart โ Add IntegrationAfter installing:
Lucia includes OpenTelemetry instrumentation:
Export to Prometheus, Grafana, Jaeger, or any OTLP-compatible backend.
git clone https://github.com/seiggy/lucia-dotnet.git
cd lucia-dotnet/infra/docker
docker compose up -d
Or build the image directly:
docker build -t lucia:latest -f infra/docker/Dockerfile .
MIT License โ see LICENSEโ .
Built with โค๏ธ for the Home Assistant community
Content type
Image
Digest
sha256:ca2df6484โฆ
Size
3.9 GB
Last updated
8 days ago
docker pull seiggy/lucia-agenthost