hassil
The Home Assistant Intent Language parser
What it is and what it does
HassIL is a sentence template parser that converts natural language input into structured intent objects with extracted slots and metadata. It uses YAML files to define intents, sentence templates with alternatives, optional phrases, permutations, slot lists, and expansion rules—allowing developers to specify how voice commands should be recognized and parsed without writing custom NLU logic.
The package is designed for Home Assistant's voice command system but can be used standalone for any application needing template-based intent recognition. It provides both a command-line interface for testing and sampling sentences, and a Python API for integration. The parser handles linguistic variations through template syntax (alternatives with pipes, optional bracketed phrases, permutations with semicolons) and supports inline range lists for numeric values.
Use it for:
- Build voice command handlers for Home Assistant by defining intents and sentence templates in YAML without training a machine learning model.
- Generate test datasets of valid sentences for each intent using the sampling feature to validate coverage before deployment.
- Extract structured parameters (area names, device names, numeric values) from user utterances for automation rule matching.
- Implement multi-language voice control by switching between different YAML intent definition files per language.
- Create a lightweight intent recognizer for IoT or embedded systems where ML-based NLU is too resource-intensive.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Parses natural language sentences into structured intents using YAML-defined templates, slot lists, and expansion rules for Home Assistant voice command recognition.
Yes, if you need template-based intent recognition for Home Assistant or similar voice automation systems. The low install friction, permissive license, active maintenance, and zero known vulnerabilities make it a safe choice. Not suitable if you need statistical NLU with out-of-the-box support for typos, synonyms, or paraphrasing—this is a rule-based parser that requires explicit template definitions.
Install
hassil on PyPI
pip
pip install hassiluv
uv add hassilpoetry
poetry add hassilInstalling hassil
Before you install
Low install friction with a pure Python wheel and only two runtime dependencies (PyYAML and unicode-rbnf). Active maintenance with a recent release (14 days old) and steady repository activity.
License in practice
Apache-2.0 permissive license allows commercial and private use with minimal restrictions; suitable for most projects including proprietary integrations.
Quickstart
pip install hassil
python3 -m hassil examples/en.yaml --areas 'living room'
# Type: what is the temperature in the living room
# Output: {'intent': 'HassClimateGetTemperature', 'area': 'living room', 'domain': 'climate'}
Requires Python 3.9 or later; YAML intent definition files must be provided to the CLI or loaded programmatically.
Verify before relying
- Whether the package provides a stable public API for programmatic use beyond the CLI interface shown in examples.
- Performance characteristics when matching against large numbers of intents or with complex template rules.
- Whether unicode-rbnf dependency is required for all use cases or only for certain language/locale scenarios.
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (>=3.9.0) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — PyYAML, unicode-rbnf |
| Maintenance | actively maintained — 14 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 190,791/month — #9,899 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: hassil-3.11.0-py3-none-any.whl
Keywords: home, assistant, intent, recognition
Tags
More Linguistic packages
Detects and normalizes text encoding from…
permissive · top 100 on PyPI
tiktokentiktoken is a fast BPE tokenizer that converts…
permissive · top 1,000 on PyPI
chardetDetects character encoding and language in byte…
permissive · top 1,000 on PyPI
text-unidecodeConverts Unicode text to ASCII by…
copyleft · top 1,000 on PyPI
larkLark is a parsing library that builds abstract…
permissive · top 1,000 on PyPI
tree-sitterPython bindings to the tree-sitter parsing…
permissive · top 1,000 on PyPI
home-assistant-intentsProvides intent recognition data and utilities…
permissive · top 15,000 on PyPI
azure-ai-language-conversationsA Python client library for Azure…
permissive · top 15,000 on PyPI
razdelSplits Russian text into sentences and tokens…
permissive · top 15,000 on PyPI
conlluParses CoNLL-U formatted text (a standard NLP…
unclear · top 15,000 on PyPI
segtokSplits Indo-European text into sentences and…
permissive · top 15,000 on PyPI
wonderwordsGenerates random English words and sentences…
permissive · top 15,000 on PyPI
hass-nabucasahass-nabucasa is a Python library that provides…
copyleft · top 15,000 on PyPI
sentence-streamSplits text streams into sentences even when…
permissive · top 15,000 on PyPI
pyobjc-framework-IntentsProvides Python bindings to Apple's Intents…
permissive · top 15,000 on PyPI