# Hassette
[](https://badge.fury.io/py/hassette)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://hassette.readthedocs.io/en/latest/?badge=stable)
[](https://codecov.io/github/NodeJSmith/hassette)
A simple, modern, async-first Python framework for building Home Assistant automations.
Documentation: https://hassette.readthedocs.io
Why Hassette?
-------------
- ๐ **Modern developer experience** with typed APIs, Pydantic models, and IDE-friendly design
- โก **Async-first architecture** designed for modern Python from the ground up
- ๐ **Simple, transparent framework** with minimal magic and clear extension points
- ๐ฏ **Focused mission**: does one thing well โ run user-defined apps that interact with Home Assistant
## Comparison to Other Frameworks
We have detailed comparisons in the docs for the two most popular frameworks. Open an issue or PR if you'd like additional comparisons!
- [AppDaemon Comparison](https://hassette.readthedocs.io/en/latest/comparisons/appdaemon.html)
- [Pyscript Comparison](https://hassette.readthedocs.io/en/latest/comparisons/pyscript.html)
## ๐ Examples
Check out the [`examples/`](https://github.com/NodeJSmith/hassette/tree/main/examples) directory for more complete examples:
- Based on AppDaemon's examples:
- [Battery monitoring](https://github.com/NodeJSmith/hassette/tree/main/examples/apps/battery.py)
- [Presence detection](https://github.com/NodeJSmith/hassette/tree/main/examples/apps/presence.py)
- [Sensor notifications](https://github.com/NodeJSmith/hassette/tree/main/examples/apps/sensor_notification.py)
- Cleaned up versions of my own apps:
- [Office Button App](https://github.com/NodeJSmith/hassette/tree/main/examples/apps/office_button_app.py)
- [Laundry Room Lights](https://github.com/NodeJSmith/hassette/tree/main/examples/apps/laundry_room_light.py)
- `docker-compose.yml` example: [docker-compose.yml](https://github.com/NodeJSmith/hassette/blob/main/examples/docker-compose.yml)
- `hassette.toml` example: [hassette.toml](https://github.com/NodeJSmith/hassette/blob/main/examples/config/hassette.toml)
## ๐ฃ๏ธ Status & Roadmap
Hassette is brand new and under active development. We follow semantic versioning and recommend pinning a minor version while the API stabilizes.
Hassette development is tracked in [this project](https://github.com/users/NodeJSmith/projects/1) (still a slight work-in-progress) - open an issue or PR if you'd like to contribute or provide feedback!
### Current Focus Areas
- ๐ **Comprehensive documentation**
- ๐ **Enhanced type safety**: Service calls/responses, additional state types
- ๐๏ธ **Entity classes**: Include state data and service functionality (e.g. `LightEntity.turn_on()`)
- ๐ **Enhanced error handling**: Better retry logic and error recovery
- ๐งช **Testing improvements**:
- ๐ More tests for core and utilities
- ๐ ๏ธ Test fixtures and framework for user apps
- ๐ซ No more manual state changes in HA Developer Tools for testing!
## ๐ค Contributing
Hassette is in active development and contributions are welcome! Whether you're:
- ๐ Reporting bugs
- ๐ก Suggesting features
- ๐ Improving documentation
- ๐ง Contributing code
Early feedback and contributions help shape the project's direction.
## ๐ License
[MIT](LICENSE)
Raw data
{
"_id": null,
"home_page": null,
"name": "hassette",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.14,>=3.11",
"maintainer_email": null,
"keywords": "home-assistant, automation, async, typed, framework, smart-home, iot",
"author": "Jessica",
"author_email": "Jessica <12jessicasmith34@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/44/1d/bff7aaeffaee8ae9560aae35d3e27bba221267c70e7e3ca1fb0fd39cadad/hassette-0.14.0.tar.gz",
"platform": null,
"description": "# Hassette\n\n[](https://badge.fury.io/py/hassette)\n[](https://www.python.org/downloads/)\n[](https://opensource.org/licenses/MIT)\n[](https://hassette.readthedocs.io/en/latest/?badge=stable)\n[](https://codecov.io/github/NodeJSmith/hassette)\n\nA simple, modern, async-first Python framework for building Home Assistant automations.\n\nDocumentation: https://hassette.readthedocs.io\n\nWhy Hassette?\n-------------\n- \ud83c\udf1f **Modern developer experience** with typed APIs, Pydantic models, and IDE-friendly design\n- \u26a1 **Async-first architecture** designed for modern Python from the ground up\n- \ud83d\udd0d **Simple, transparent framework** with minimal magic and clear extension points\n- \ud83c\udfaf **Focused mission**: does one thing well \u2014 run user-defined apps that interact with Home Assistant\n\n## Comparison to Other Frameworks\n\nWe have detailed comparisons in the docs for the two most popular frameworks. Open an issue or PR if you'd like additional comparisons!\n\n- [AppDaemon Comparison](https://hassette.readthedocs.io/en/latest/comparisons/appdaemon.html)\n- [Pyscript Comparison](https://hassette.readthedocs.io/en/latest/comparisons/pyscript.html)\n\n## \ud83d\udcd6 Examples\n\nCheck out the [`examples/`](https://github.com/NodeJSmith/hassette/tree/main/examples) directory for more complete examples:\n- Based on AppDaemon's examples:\n - [Battery monitoring](https://github.com/NodeJSmith/hassette/tree/main/examples/apps/battery.py)\n - [Presence detection](https://github.com/NodeJSmith/hassette/tree/main/examples/apps/presence.py)\n - [Sensor notifications](https://github.com/NodeJSmith/hassette/tree/main/examples/apps/sensor_notification.py)\n- Cleaned up versions of my own apps:\n - [Office Button App](https://github.com/NodeJSmith/hassette/tree/main/examples/apps/office_button_app.py)\n - [Laundry Room Lights](https://github.com/NodeJSmith/hassette/tree/main/examples/apps/laundry_room_light.py)\n- `docker-compose.yml` example: [docker-compose.yml](https://github.com/NodeJSmith/hassette/blob/main/examples/docker-compose.yml)\n- `hassette.toml` example: [hassette.toml](https://github.com/NodeJSmith/hassette/blob/main/examples/config/hassette.toml)\n\n## \ud83d\udee3\ufe0f Status & Roadmap\n\nHassette is brand new and under active development. We follow semantic versioning and recommend pinning a minor version while the API stabilizes.\n\nHassette development is tracked in [this project](https://github.com/users/NodeJSmith/projects/1) (still a slight work-in-progress) - open an issue or PR if you'd like to contribute or provide feedback!\n\n### Current Focus Areas\n\n- \ud83d\udcda **Comprehensive documentation**\n- \ud83d\udd10 **Enhanced type safety**: Service calls/responses, additional state types\n- \ud83c\udfd7\ufe0f **Entity classes**: Include state data and service functionality (e.g. `LightEntity.turn_on()`)\n- \ud83d\udd04 **Enhanced error handling**: Better retry logic and error recovery\n- \ud83e\uddea **Testing improvements**:\n - \ud83d\udcca More tests for core and utilities\n - \ud83d\udee0\ufe0f Test fixtures and framework for user apps\n - \ud83d\udeab No more manual state changes in HA Developer Tools for testing!\n\n## \ud83e\udd1d Contributing\n\nHassette is in active development and contributions are welcome! Whether you're:\n\n- \ud83d\udc1b Reporting bugs\n- \ud83d\udca1 Suggesting features\n- \ud83d\udcdd Improving documentation\n- \ud83d\udd27 Contributing code\n\nEarly feedback and contributions help shape the project's direction.\n\n## \ud83d\udcc4 License\n\n[MIT](LICENSE)\n",
"bugtrack_url": null,
"license": null,
"summary": "Hassette is a simple, modern, async-first Python framework for building Home Assistant automations.",
"version": "0.14.0",
"project_urls": {
"Bug Reports": "https://github.com/nodejsmith/hassette/issues",
"Changelog": "https://github.com/nodejsmith/hassette/blob/main/CHANGELOG.md",
"Documentation": "https://github.com/nodejsmith/hassette#readme",
"Homepage": "https://github.com/nodejsmith/hassette",
"Repository": "https://github.com/nodejsmith/hassette"
},
"split_keywords": [
"home-assistant",
" automation",
" async",
" typed",
" framework",
" smart-home",
" iot"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "3d9c83d8a230a0f526cb745e9ec5b736b3538e0548adb7da175e9eff5008df82",
"md5": "7ae5327239be4f29834c0e3ca7322748",
"sha256": "205803f97a965dc6e1e03a0349f1aabc78e785d586eff7040b377549f4d564e5"
},
"downloads": -1,
"filename": "hassette-0.14.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7ae5327239be4f29834c0e3ca7322748",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.14,>=3.11",
"size": 138169,
"upload_time": "2025-10-19T23:53:17",
"upload_time_iso_8601": "2025-10-19T23:53:17.233138Z",
"url": "https://files.pythonhosted.org/packages/3d/9c/83d8a230a0f526cb745e9ec5b736b3538e0548adb7da175e9eff5008df82/hassette-0.14.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "441dbff7aaeffaee8ae9560aae35d3e27bba221267c70e7e3ca1fb0fd39cadad",
"md5": "2d98377d75e7adf3b17d02a344e99760",
"sha256": "ab519319d26ac56a07330fe907903788b5b9230fa4a0278eecf1c7442d604dc8"
},
"downloads": -1,
"filename": "hassette-0.14.0.tar.gz",
"has_sig": false,
"md5_digest": "2d98377d75e7adf3b17d02a344e99760",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.14,>=3.11",
"size": 95446,
"upload_time": "2025-10-19T23:53:18",
"upload_time_iso_8601": "2025-10-19T23:53:18.965602Z",
"url": "https://files.pythonhosted.org/packages/44/1d/bff7aaeffaee8ae9560aae35d3e27bba221267c70e7e3ca1fb0fd39cadad/hassette-0.14.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-19 23:53:18",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nodejsmith",
"github_project": "hassette",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "hassette"
}