home-generative-agent

by goruckVerified

AI agent for Home Assistant — talk to your home, create automations in plain language, analyze cameras with face recognition, and get proactive anomaly alerts. Cloud LLMs or fully local via Ollama.

286
Stars
50
Forks
Python
Language
8/23/2026
Added
View on GitHubDownload ZIP

⚠️ Third-Party Software Notice

This skill is third-party open-source software developed and hosted independently on GitHub. SkillTip is an informational directory and does not control or maintain the underlying repository. Any security checks displayed are automated and limited in scope. Review the source code before installing.

Read the Terms of Service

Installation

Add to your Claude Code skills directory:

# Add to your Claude Code skills
git clone https://github.com/goruck/home-generative-agent

Getting Started

Guides for using skills like home-generative-agent.

Security Report

Verified

Last scanned: —

{
  "status": "PASSED",
  "issues": []
}

README.md

Home Generative Agent

Talk to your home.

GitHub Release HACS GitHub Stars GitHub Activity License

Project Maintenance

A Home Assistant integration that brings a generative AI agent into your smart home. Talk to your home, create automations in plain English, analyze camera footage, and get proactive alerts — all powered by your choice of cloud or local LLMs. HGA is a single integration that gives you conversational control over every HA entity, camera understanding with face recognition, long-term semantic memory, and the Sentinel anomaly engine.

Create an automation

Creating an automation in plain English — the agent writes the YAML, registers it, and it shows up in the HA automation editor.

Why HGA?

Most AI conversation integrations are prompt passthroughs: they forward your words to an LLM and read back the answer. HGA is a full agent built on LangGraph — it uses tools to control entities, query history, watch cameras, and write real HA automations; it keeps long-term semantic memory in pgvector so it remembers your preferences across conversations; and its Sentinel anomaly engine keeps safety decisions deterministic, with the LLM advising but never actuating. Everything runs against the model provider you choose — including fully local, so no data has to leave your home.

Features

FeatureWhat it does
Conversational controlTalk to your home in natural language. Turn things on, check status, ask questions.
Automation creationDescribe what you want in chat and the agent writes and registers the HA automation. With the Critical Action PIN enabled, an automation that would unlock a door or open a garage is held for PIN confirmation before it is installed — same as the direct command.
Camera & image analysisAsk the agent what it sees in any camera. Proactive motion-triggered analysis with anomaly detection. Works with Axis, Ring via ring-mqtt, Reolink, UniFi Protect, and any camera that exposes a motion entity or recording state in HA — see Camera Entities for setup notes (battery Ring cameras need a snapshot-mode tweak).
Sentinel anomaly detectionDeterministic rules watch for security and safety issues (unlocked locks, open entries, unknown people — the unknown-person rules require the face-service) and alert your phone. Optional LLM-powered triage and rule discovery — covering power, battery, and environmental sensors (temperature, humidity, CO₂, air quality, …). Approved discovery rules can be inspected, deactivated, reactivated, and surgically repaired via HA services.
Face recognitionIdentify people in camera frames and personalize alerts.
Long-term memorySemantic search over past conversations. The agent remembers your preferences and context.
Streaming responsesFirst tokens appear word-by-word in the HA conversation UI — no waiting for the full response.
Cloud and edge modelsUse OpenAI, Gemini, Anthropic, or run everything locally with Ollama or any OpenAI-compatible server.

Screenshots

Camera analysis

Camera analysis demo

Long-term memory with semantic search

Semantic memory

Proactive camera notifications

Proactive notification

Real-time camera alert mobile device notifications

camera alert notification

Anomaly detection notification

fridge power notification

Requirements

RequirementNotes
Home Assistant2025.5.0 minimum; 2026.4.0+ for streaming responses
HACSRequired for the recommended install path; manual install is also supported
PostgreSQL with pgvectorProvided as a bundled HA app (step 1 below)
Model providerAt least one of: OpenAI, Gemini, Anthropic, Ollama, or any OpenAI-compatible server
Edge GPU server (optional)Ollama, vLLM, llama.cpp, or LiteLLM for local model serving
face-service (optional)An external service for face recognition in camera analysis. Also powers Sentinel's unknown-person rules, which never fire unless face recognition is enabled (the face_recognition option, off by default) with this service configured

Quick Start

Get the basic conversational agent running in seven steps. See the full installation guide for optional apps (edge models, face recognition).

1. Install the PostgreSQL with pgvector app.

Requires Home Assistant OS or Supervised (apps are not available on HA Container or Core).

Click the button below to add the repository, then install and configure the app per its documentation.

Add add-on repository

If the button doesn't work, add the repository manually: Settings → Apps → App Store → ⋮ → Repositories, enter https://github.com/goruck/addon-postgres-pgvector, then search for and install postgres_pgvector.

2. Install Home Generative Agent from HACS.

Open in HACS

3. Restart Home Assistant.

4. Add the integration: Settings → Devices & Services → Add Integration → search Home Generative Agent → complete the initial instruction screen.

5. Add a Model Provider: on the integration page click + Model Provider and configure OpenAI, Ollama, Gemini, Anthropic, or any OpenAI-compatible endpoint. A provider must exist before you can run Setup.

6. Open the integration page and click + Setup. Choose a setup mode:

  • Basic — enables all features with recommended defaults and creates the database subentry automatically. No database prompt appears.
  • Advanced — configure each feature individually; includes a database configuration step.

7. Set as your voice assistant: Settings → Voice Assistants → select Home Generative Agent as the conversation agent.

You can now open the HA Assist panel and start talking to your home.

Documentation

GuideContents
InstallationHACS install, manual install, optional apps (Ollama, face recognition)
ConfigurationModel providers, features, Tool Retrieval (RAG), LLM API, STT, YAML mode, Critical Action PIN, camera description language & extra VLM instructions, UI languages (en/cs/ru/tr)
SentinelAnomaly detection pipeline, built-in rules, triage, baseline, blueprints, notification quiet hours, services API, health sensor
Camera EntitiesImage and sensor entities, dashboards, automations, proactive video analysis, face recognition
ArchitectureLangGraph agent, model tiers, context management, streaming, latency, tools
ContributingDev setup, Makefile reference, dependency workflow, translations

More Examples

Automation that runs on a schedule

User asked: "Remind me every 30 minutes if the litter box waste drawer is over 90% full." Agent wrote and registered the automation.

alias: Check Litter Box Waste Drawer
triggers:
  - minutes: /30
    trigger: time_pattern
conditions:
  - condition: numeric_state
    entity_id: sensor.litter_robot_4_waste_drawer
    above: 90
actions:
  - data:
      message: The Litter Box waste drawer is more than 90% full!
    action: notify.notify

Periodic automation

Query entity history

User asked: "When did the front porch light turn on today?" Agent queried the HA history database and summarized the results. Check light history

Energy consumption report

User asked: "How much energy did the fridge use today?" Agent pulled sensor history and gave a plain-English summary. Fridge energy report

Semantic memory across conversations

User asked in a later conversation: "always prepare the home for my arrival at night" Agent retrieved the relevant context from long-term memory and then built the automation, remembering that the user arrives home around 7:30 PM.

Semantic memory 2 Semantic memory 3

Check a camera for packages

User asked: "Are there any packages at the front gate?" Agent analyzed the live camera and confirmed two boxes visible. Check for packages

Community Dashboards

Dashboard recipes shared by users. Have one of your own? Post it in Discussions and it may get featured here.

The recipes below were shared by @hruba202 in discussion #513 and issue #538. The first two use the excellent flex-table-card (the second also has a compact entity-attributes-card variant); the third combines vertical-stack-in-card, entity-attributes-card, and card-mod (all installable from HACS). Replace the example entity IDs with your own; the column names and labels are in Czech from the original install — rename them to taste. The grid_options sizing in the flex-table recipes assumes the newer sections dashboard layout with wide sections — trim the columns: values to fit your grid (standard sections are 12 columns wide; the older masonry layout ignores grid_options entirely).

Recognized people across cameras

One row per camera, pulling the recognized_people sensor attributes into columns.

Recognized people flex-table dashboard

type: custom:flex-table-card
title: Rozpoznané osoby
entities:
  include:
    - sensor.kamera_obyvak_1_recognized_people
    - sensor.kamera_obyvak_2_recognized_people
    - sensor.kamera2_recognized_people
    - sensor.kamera3_recognized_people
    - sensor.kamera4_recognized_people
columns:
  - data: name
    name: kamera
  - data: state
    name: osoby
  - data: count
    name: počet
  - data: summary
    name: shrnutí
  - data: last_event
    name: poslední událost
grid_options:
  columns: 30

Tip: cameras with no events yet report null for summary and last_event — older flex-table-card releases render that as the undefined text visible in the screenshot above; current releases show n/a. To substitute your own placeholder, use the column's modify option. Two gotchas: quote the expression (its colon otherwise breaks YAML parsing), and current card versions hand modify an empty array for missing values, so a plain x == null check isn't enough:

  - data: summary
    name: shrnutí
    modify: "Array.isArray(x) || x == null ? '—' : x"

Sentinel health at a glance

A two-row grid over the Sentinel health sensor, spreading its KPI attributes across columns.

Sentinel health flex-table dashboard

square: false
type: grid
cards:
  - type: custom:flex-table-card
    entities:
      include:
        - sensor.sentinel_health
    columns:
      - data: state
        name: zdraví
      - data: baseline_rules_waiting
        name: bsl_rules_waiting
      - data: last_run_start
        name: l_r_s
      - data: run_duration_ms
        name: doba
      - data: active_rule_count
        name: pravidla aktiv
      - data: triggers_dropped_incoming
        name: t_dropped_incoming
      - data: triggers_ttl_expired
        name: t_ttl_expired
      - data: triggers_dropped_queued
        name: t_d_queued
    grid_options:
      columns: 5
      rows: 1
  - type: custom:flex-table-card
    entities:
      include:
        - sensor.sentinel_health
    columns:
      - data: false_positive_rate_14d
        name: f_p_rate_14d
      - data: baseline_fresh_count
        name: bsl_fresh_count
      - data: baseline_stale_count
        name: bsl_stale_count
      - data: baseline_entity_count
        name: bsl_entity_count
      - data: baseline_rules_waiting
        name: bsl_rules_waiting
      - data: baseline_last_update
        name: bsl_last_update
      - data: findings_count_by_severity
        name: f_c_by_severity
      - data: action_success_rate
        name: a_s_rate
    grid_options:
      columns: 5
      rows: 1
grid_options:
  columns: full
  rows: 3
title: SENTINEL HEALTH
columns: 1

Tip: findings_count_by_severity is a dictionary attribute (keys low/medium/high), so it renders as [object Object] by default. Use the column's modify option (same two gotchas as above) to pull out one severity per column, modify: "Array.isArray(x) || x == null ? '—' : (x.high ?? 0)", or render the whole dictionary compactly with modify: "Array.isArray(x) || x == null ? '—' : JSON.stringify(x)".

Compact variant

A tighter single-card alternative (shared in issue #538) that lists a hand-picked subset of the health sensor's attributes — plus triggers_excluded, which the flex-table grid above doesn't show — as label/value rows via entity-attributes-card:

type: custom:entity-attributes-card
heading_name: Sentinel
heading_state: ok
filter:
  include:
    - key: sensor.sentinel_health.triggers_excluded
      name: vyloučená spuštění
    - key: sensor.sentinel_health.baseline_rules_waiting
      name: čekajici pr.
    - key: sensor.sentinel_health.last_run_start
      name: poslední běh
    - key: sensor.sentinel_health.run_duration_ms
      name: doba běhu
    - key: sensor.sentinel_health.active_rule_count
      name: aktivní pravidla
    - key: sensor.sentinel_health.triggers_dropped_incoming
      name: zahozené příchozí t.
    - key: sensor.sentinel_health.triggers_ttl_expired
      name: triggers_ttl_expired
    - key: sensor.sentinel_health.triggers_dropped_queued
      name: zahazované/zařazené tr.

Tip: heading_name and heading_state are static column-header text, not live entity state — the ok above stays "ok" even when the health sensor reports degraded. entity-attributes-card renders attributes only; to show the actual sensor state, keep the flex-table variant's data: state column or pair this card with an entities row for sensor.sentinel_health, as in the per-camera recipe below. Two more quirks: the three triggers_* scheduler rows only exist after the first Sentinel run completes, so a fresh install shows five rows until then — warm-up, not dead keys. And the card renders values raw: last_run_start appears as a full ISO-8601 timestamp and not-yet-populated attributes as the literal text None (the original post's autoformat: true is not an entity-attributes-card option and is omitted here).

Per-camera event card

A single-camera card stacking the recognized-people sensor, the last-event image, and the sensor's attributes, with card_mod styling on top.

Per-camera event card

type: custom:vertical-stack-in-card
cards:
  - type: entities
    entities:
      - entity: sensor.kamera_obyvak_2_recognized_people
    show_header_toggle: false
    state_color: true
  - type: picture-entity
    entity: image.kamera_obyvak_2_last_event
    show_name: false
    show_state: false
    tap_action:
      action: none
    hold_action:
      action: none
  - type: custom:entity-attributes-card
    heading_name: []
    heading_state: []
    filter:
      include:
        - key: sensor.kamera_obyvak_2_recognized_people.recognized_people
          name: rozpoznana osoba
        - key: sensor.kamera_obyvak_2_recognized_people.count
          name: počet
        - key: sensor.kamera_obyvak_2_recognized_people.last_event
          name: posledni událost
        - key: sensor.kamera_obyvak_2_recognized_people.summary
          name: shrnutí
card_mod:
  prepend: true
  style: |
    ha-card {
      background: brown;
      --ha-card-background: maroon;
      color: var(--primary-color);
    }
    :host {
      --card-mod-icon: mdi:cctv;
    }

Tip: the recognized-people sensor exposes exactly six attributes: recognized_people, count, summary, last_event, latest_path, and camera_id. entity-attributes-card silently omits any row whose key doesn't exist, so misspelled keys just disappear from the card. (The version above corrects three rows from the original post accordingly — see the discussion thread. The screenshot predates the correction, so your card will show one more row than pictured: the summary.)

Contributions are welcome

If you want to contribute to this, please read the Contribution guidelines.


Frequently Asked Questions

What is home-generative-agent?

home-generative-agent is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by goruck. AI agent for Home Assistant — talk to your home, create automations in plain language, analyze cameras with face recognition, and get proactive anomaly alerts. Cloud LLMs or fully local via Ollama. It has 286 GitHub stars.

Is home-generative-agent safe to use?

Yes. home-generative-agent passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.

How do I install home-generative-agent?

Clone the repository with "git clone https://github.com/goruck/home-generative-agent" and add it to your Claude Code skills directory (see the Installation section above).

What programming language is home-generative-agent written in?

home-generative-agent is primarily written in Python. It is open-source under goruck on GitHub, so you can review or fork the full source.

Are there alternatives to home-generative-agent?

Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh home-generative-agent against similar tools.

Comments (0)

No comments yet. Be the first to share your thoughts!

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

242,21936,702JavaScript
AI Agentsai-agentsanthropicclaude-code
View details
15

An agentic skills framework & software development methodology that works.

234,96620,863Shell
AI Agentsai-agentsbrainstorming
View details

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

185,94028,768JavaScript
AI Agentsai-agentsanthropicclaude-code
View details

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

128,8688,826Rust
AI Agentsclaude-codeai-tools
View details

claude-code

by anthropics

Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.

120,03119,897Shell
AI Agents
View details

Developers Also Liked

Based on votes and bookmarks from developers who liked this skill

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

242,21936,702JavaScript
AI Agentsai-agentsanthropicclaude-code
View details
15

An agentic skills framework & software development methodology that works.

234,96620,863Shell
AI Agentsai-agentsbrainstorming
View details

n8n

by n8n-io

12

Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

201,88160,308TypeScript
MCP Serversapisai-tools
View details

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

185,94028,768JavaScript
AI Agentsai-agentsanthropicclaude-code
View details

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

128,8688,826Rust
AI Agentsclaude-codeai-tools
View details