Skip to main content

Home Assistant REPL

Rhizomatics Open Source GitHub Workflow Status PyPI PyPI - Python Version Docs GitHub GitHub last commit

A slice of cherry pie, drawn like a 1990s Visual Basic icon

A REPL shell custom designed for Home Assistant custom component developers, tinkerers and native Python speakers. Makes it easy as pie!

It is an opinionated REPL (Read-Eval-Print-Loop) shell that aims are to make it easier without any configuration to:

  • Exploring of the APIs in context of a live working instance
  • Trialling out snippets of code
  • Debugging code (but see note below)
  • Hotfixing issues that don't have built in support to do so from existing components.
$ uv run --with homeassistant-repl ha-repl --token=<insert token here>
Home Assistant REPL (API client mode) connected to ws://homeassistant.local:8123/api/websocket. `obj` only, read-only - no `hass`. Ctrl-D to exit.
>>> obj["/mqtt/binary_sensor/kitchen_terrace_window_tilt"].state
'off'
>>> [o.name for o in obj["/rflink/binary_sensor"].values() if o.state=='unavailable']
['Shed Intruder Alarm', 'Panic Keyfob']
>>> {(o.entity_id, o.state) for o in obj.find(domain="binary_sensor",platform="mqtt")}
{
    ('binary_sensor.terrace_pir_occupancy', 'unavailable'),
    ('binary_sensor.scullery_smoke_alarm_battery_low', 'off'),
    ('binary_sensor.kitchen_terrace_window_tweaked', 'off'),
    ('binary_sensor.scullery_water_detector_water_leak', 'dry'),
    ('binary_sensor.boiler_co_detector_battery_low', 'off'),
    ('binary_sensor.pantry_sensor_occupancy', 'off')
}
>>>

If you're not already comfortable using Python tools to manipulate data on the fly, or better REPL shells in other languages, this is a great way to learn, and faster at the keyboard than clicking around Jupyter notebooks.

This is primarily for developers of custom components, and their LLM agents, though may be of interest for other folk tinkering with Home Assistant. It is a potentially sharp tool, so NOT appropriate for general Home Assistant users.

Features

  • Integrated with rich and pygments for pretty object printouts and stack traces
  • Reuses session and history features from prompt-toolkit
  • Access to all entities via an Object Tree dictionary like interface
  • Usual multi-line editing support and history of Python
  • Integrated with homeassistant-api as hass_api object
  • Auto-awaits coroutines for easy shell use (can be switched off or overridden)
  • Dedicated shell that can be run without installation with uv
  • Add in your own plugins or package up a plugin with your component to help other developers
  • Usable from inside ipython shell, Marimo notebooks or plain python -m asyncio

All of the above works with standard Home Assistant APIs, referred to as api mode.

Home Assistant REPL also has an advanced live mode that taps directly into a live Home Assistant using an optional server component available via HACS.

Get started with a single line at Quick Start

Advanced Modes

These modes require a custom component to be installed on the target Home Assistant server via HACS, or use the supplied scripts to install on a local devcontainer. It adds:

  • Full access to the core Home Assistant Python API via hass
  • Read/write access to the actual objects, e.g. entities and their helpers
  • Agent friendly non-interactive mode using Exec Mode
  • A frisson of danger

Future Developments

See the Roadmap for where this might go, and your feedback welcome.

!!! note It is not intended to ever be a replacement for a Python debugger, although it may complement one. It also does not intend to replicate PyScript, instead focusing on standard python (PyScript uses MicroPython) even at expense of general usability or home assistance access, and not a general automation script execution service. For most non-developer cases, homeassistant-cli is a better choice, with pre-packaged access to devices, entities, services etc.

Agent Support

For coding agents, there is Exec Mode and a marketplace skill.

Other Python REPLs

These are all current with Python v3, there are others like dreampie that didn't make it past Python 2.

### Out of the Box

  • Python Interactive Mode - Core python REPL, greatly enhanced in v3.13 with PyPi code, and now the default Python terminal experience.
  • VSCode Python REPL - Notebook style with Intellisense, bundled with the standard Microsoft VSCode Python bundle

Classics

  • Terminal iPython - Progenitor of Jupyter notebooks, rich formatting, syntax help, shell integration etc
  • ptpython - Syntax help and formatting, mouse support and more. Part of the prompt-toolkit project, also used by Home Assistant REPL.
  • bpython - Syntax help, auto-complete, improved history
  • xon.sh - python-centric shell
  • IDLE - the original Python Foundation enhanced shell, colourized text, multi-window etc

Metadata

Release files for homeassistant-repl 0.12.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for homeassistant-repl 0.12.0
File Size Uploaded
homeassistant_repl-0.12.0.tar.gz 50.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for homeassistant-repl 0.12.0
File Interpreter ABI Platform
homeassistant_repl-0.12.0-py3-none-any.whl Python 3 none any Details

Total release size: 108.2 kB

Release files / homeassistant_repl-0.12.0.tar.gz

Download URL homeassistant_repl-0.12.0.tar.gz
Size 50.9 kB
Tags Source
SHA-256 checksum
How to use checksums
24e4a4e4e25b87f5c9ab089fe0af77cf2be4e2c7dc22b15a0dcd356acb414194
BLAKE2b-256 checksum
How to use checksums
2dc2abde52eebc0625ac3bb6437e5e817144f5b8806c8237679fd9d0d32d897b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release files / homeassistant_repl-0.12.0-py3-none-any.whl

Download URL homeassistant_repl-0.12.0-py3-none-any.whl
Size 57.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f26d1529efe21ee9a5bbd006db944874419bd069d2031c804e689d09d18742a5
BLAKE2b-256 checksum
How to use checksums
454830c1e7f835d0fccb0eb42e5e3dcccf9908e4f38965df32bec4723776082b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 9, 2026.

Transparency log

Release history Release notifications | RSS feed

0.13.0

2 release files

This release

0.12.0 This release

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.4.0

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page