A simple, modern, async-first Python framework for building Home Assistant automations.
Documentation: https://hassette.readthedocs.io
- Type Safe: Full type annotations with Pydantic models and comprehensive IDE support
- Async-First: Built for modern Python with async/await throughout
- Dependency Injection: Clean handler signatures with FastAPI style dependency injection
- Persistent Storage: Built-in disk cache for storing data across restarts, intelligent rate-limiting, and more
- Simple & Focused: Just Home Assistant automations - no complexity creep
- Developer Experience: Clear error messages, proper logging, hot-reloading, and intuitive APIs
See the Getting Started guide for detailed instructions.
New to automation frameworks?
- Hassette vs. Home Assistant YAML - Decide if Hassette is right for your needs
Coming from AppDaemon?
- AppDaemon Comparison - See what's different and how to migrate
Check out the examples/ directory for complete working examples:
Based on AppDaemon's examples:
- Battery monitoring - Monitor device battery levels
- Presence detection - Track who's home
- Sensor notifications - Alert on sensor changes
Real-world apps:
- Office Button App - Multi-function button handler
- Laundry Room Lights - Motion-based lighting
Configuration examples:
- Docker Compose Guide - Docker deployment setup
- HassetteConfig - Complete configuration reference
Hassette is under active development. We follow semantic versioning and recommend pinning a minor version (e.g., hassette~=0.x.0) while the API stabilizes.
Development is tracked in our GitHub project. Open an issue or PR if you'd like to contribute!
- 🔐 Enhanced type safety - Fully typed service calls and additional state models
- 🏗️ Entity classes - Rich entity objects with built-in methods (e.g.,
await light.turn_on()) - 🔄 Enhanced error handling - Better retry logic and error recovery
- 🧪 Testing improvements - More comprehensive test coverage and user app testing framework
Contributions are welcome! Whether you're:
- 🐛 Reporting bugs or issues
- 💡 Suggesting features or improvements
- 📝 Improving documentation
- 🔧 Contributing code
See CONTRIBUTING.md for guidelines on getting started.