Skip to content

TypeSafe Conversation for Home Assistant

Home Assistant conversation agent that resolves commands from one System One call with a fan-out of typed questions, asking when unsure.

Projectprototype

Overview

TypeSafe Conversation for Home Assistant replaces an LLM conversation agent with a System One model for device commands and state queries. Home Assistant's own sentence matcher handles phrasings it recognizes; what reaches this agent are the fuzzy and compound requests. One call sends the request plus every exposed entity and area as state, with eight fixed questions, three built from the entity catalog, one per device kind present and a few conditional ones.

A pure route function over the answers then picks: command (run Home Assistant intents), query, compound (an LLM splits it, then parallel Jev calls), general (LLM answers in prose) or unsure (fall back and say so). The README explains its speculative fan-out: an extra question cost about 97 input tokens and little latency, versus about 250 ms for another round trip. It reports replacing a 2 to 8 second LLM turn with about 250 ms for home control. It is early-stage, has tests, and supports a local server as an alternative to the metered hosted API.

What the decision model decides

TypeQuestionAnswers
ChoiceIs this request a command, query, compound, general question or unsure?command · query · compound · general · unsure
ChoiceWhat should happen to the locks (and other device kinds)?—
ChoiceWhich entity or area does the request target?—

How it works

  1. Build a cached entity catalog.
  2. Send one System One call with the request and a fan-out of questions.
  3. A pure function routes on the answers.
  4. Commands run via Home Assistant intents; compound or general requests use an LLM; unsure requests fall back.

Strengths

  • About 250 ms per home-control request versus 2 to 8 s for an LLM turn, per the README.
  • Speculative fan-out avoids extra round trips.
  • Asks when unsure instead of guessing.
  • Local server option needs no hosted key.

Caveats

  • Early status with rough edges.
  • Hosted API is metered.
  • Still needs an LLM for compound and general requests.

Getting started

Add the repository to HACS as a custom integration and configure a TypeSafe key or a local server.

At a glance

Type
Project
Status
prototype
Language
Python
Runtime
Home Assistant custom integration
Has code
yes
Has tests
yes

Use cases and integrations

How curated lists describe it

  • A Home Assistant voice agent that decides with typed, calibrated judgements instead of an LLM. One ~300 ms call per command, and it asks when it isn't sure.

    hellogumbo/awesome-jev

Frequently asked questions

When is an LLM still used?

Only to split compound requests and to answer general questions in prose.

Why ask questions that may be irrelevant?

An extra question costs about 97 tokens and little latency, cheaper than another round trip.

Does it require the hosted API?

No, a local server is supported.

Related projects

  • Home Assistant conversation agent that maps Assist commands to built-in intents using a Jev fan-out of typed questions.

    ProjectbetaPython
  • Home Assistant conversation agent where Jev classifies an utterance and either calls a light, climate or cover service or hands off to Grok.

    ProjectprototypePython
  • Rails engine for voice and typed commands: define actions in a Ruby DSL and Jev picks the matching command or page control.

    ProjectprototypeRuby
  • Reddit r/homeassistant post presenting TypeSafe Conversation, a Home Assistant voice agent built on Jev.

    Discussiondiscussion
  • Mac voice assistant where one Jev call per utterance maps speech to app, volume, Spotify and system actions; an LLM only answers questions.

    AppprototypePython
  • Local web and voice interface for Codex and Claude sessions in tmux, where Jev interprets each request and Python performs it.

    ProjectprototypePython