typesafe-assist
Home Assistant conversation agent that maps Assist commands to built-in intents using a Jev fan-out of typed questions.
Overview
TypeSafe Conversation (Jev) is a Home Assistant custom integration that interprets Assist voice and text commands with Jev. Each command, with the entities exposed to Assist, is sent in a single request containing a speculative fan-out of questions: intent, target, device, room, brightness and so on. The answers are mapped to Home Assistant's built-in intents such as HassTurnOn, HassLightSet and HassGetState, which do the device control; spoken confirmations come from templates.
When Jev is unsure, when a request is conversational, or when it contains several actions, the original text goes to an optional fallback agent such as OpenAI, Anthropic or Ollama. Ambiguous references like "turn off the fan" with two fans are resolved by skipping unavailable devices, preferring the speaker's room, treating plurals as all, or asking "Which fan: A or B?" and resolving the reply with a tiny second Jev request. It installs via HACS and is an independent community project.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | What is the intent of this command? | HassTurnOn · HassLightSet · HassGetState · ... |
| Choice | Which device or room does the command target? | — |
| Choice | Which fan did the user mean: A or B? | A · B |
How it works
- Assist receives a command.
- Jev answers a fan-out of intent, target, device, room and value questions.
- Confident answers are mapped to a built-in intent and executed.
- Uncertain, conversational or multi-action requests go to a fallback agent.
Strengths
- Device control goes through Home Assistant's own intents, not generated text.
- Clarifying questions resolve ambiguous devices cheaply.
- Fallback agent handles what Jev should not.
Caveats
- Unofficial community integration.
- Requires a TypeSafe account and key; commands leave the home network.
Getting started
Add https://github.com/JanOstrowka/typesafe-assist as a HACS custom repository (Integration), install and restart Home Assistant.At a glance
- Type
- Project
- Status
- beta
- Language
- Python
- Runtime
- Home Assistant custom integration
- Has code
- yes
Use cases and integrations
How curated lists describe it
Home Assistant Assist conversation agent powered by TypeSafe's Jev (System One) model.
hellogumbo/awesome-jev
Frequently asked questions
What does Jev decide?
The intent, target device, room and values for each Assist command.
What happens if Jev is unsure?
The text is handed to an optional fallback conversation agent.
How are ambiguous devices handled?
By room preference, availability, plurals, or by asking the user and resolving the reply with Jev.
Related projects
Home Assistant conversation agent that resolves commands from one System One call with a fan-out of typed questions, asking when unsure.
ProjectprototypePythonHome Assistant conversation agent where Jev classifies an utterance and either calls a light, climate or cover service or hands off to Grok.
ProjectprototypePythonRails engine for voice and typed commands: define actions in a Ruby DSL and Jev picks the matching command or page control.
ProjectprototypeRubyReddit r/homeassistant post presenting TypeSafe Conversation, a Home Assistant voice agent built on Jev.
DiscussiondiscussionMac voice assistant where one Jev call per utterance maps speech to app, volume, Spotify and system actions; an LLM only answers questions.
AppprototypePythonLocal web and voice interface for Codex and Claude sessions in tmux, where Jev interprets each request and Python performs it.
ProjectprototypePython