# Home Assistant REPL > Python REPL Shell for Home Assistant Developers Home Assistant REPL is a Python shell for developers of Home Assistant custom components. It exposes the live object tree - entities and more - as a dict-like `obj`, for exploring APIs, trying out code snippets and hotfixing issues directly against a running Home Assistant instance. `api` mode uses only the standard Home Assistant HTTP/WebSocket API; an optional `live` mode, via a HACS companion component, adds direct access to the core Python API as `hass`. ## Start here - [Home Assistant REPL](https://homeassistant-repl.rhizomatics.org.uk/index.md): Overview of what Home Assistant REPL does, api vs live mode, and getting started - [Exec Mode](https://homeassistant-repl.rhizomatics.org.uk/modes/exec_mode/index.md): Running one-shot snippets with `ha-repl exec` - options, JSON output, exit codes, sessions and tips for coding agents ## Reference - [Live Mode](https://homeassistant-repl.rhizomatics.org.uk/modes/live_mode/index.md): Installing the server component, the live shell, and which statements run locally or inside Home Assistant - [The Object Tree](https://homeassistant-repl.rhizomatics.org.uk/obj_tree/index.md): The `obj` object tree - path and entity id lookup, `find()` filters and `show()` - [SQL Access](https://homeassistant-repl.rhizomatics.org.uk/sql/index.md): The `sql` object for querying the Recorder database, and its result and table objects - [Alternative Integration](https://homeassistant-repl.rhizomatics.org.uk/configuration/alternative_integration/index.md): Using `homeassistant_repl.connect()` from plain Python, ipython or Marimo instead of the shell ## Optional - [Design principles](https://homeassistant-repl.rhizomatics.org.uk/developer/design/design_principles/index.md): Design principles behind the client/server split