Home Assistant kiosk app for Android tablets.

superdash turns an Android tablet into an always-on Home Assistant wall panel. Your dashboard runs full-screen in a kiosk, stays signed in across restarts, and gains the extras a wall panel wants: hands-free voice control, an ambient photo screensaver, and doorbell camera overlays. It can also expose itself back to Home Assistant over the ESPHome native API, so HA can read and control the kiosk.
Features
- Full-screen kiosk — Your Home Assistant dashboard, edge-to-edge and always-on. Stays signed in across reboots.
- Hands-free voice — On-device wake word detection sends your speech straight to Home Assistant Assist.
- Ambient screensaver — Photo slideshow (Immich), clock overlay, and a night mode for idle hours.
- Doorbell overlays — A live camera feed pops up when a doorbell rings.
- Camera & motion sensing — Exposes the tablet camera and an on-device motion sensor to Home Assistant, and can wake the screen when someone approaches.
- Two-way with Home Assistant — Exposes the tablet back to HA over the ESPHome native API, so HA can read and control the kiosk.
- Customizable sidebar — A rail of shortcuts (settings, reload, sleep/wake, night mode, jump to any dashboard view) pinned to any screen edge.
Getting Started
This is for installing a released build on a tablet. To build it yourself, see Building from source.
Requirements
- Android 9 or newer (API level 28). This is a hard requirement. The app will not install on older Android versions. Old tablets also need a reasonably recent WebView for the Home Assistant dashboard.
- An arm64 (64-bit) tablet. The APK ships arm64-v8a only.
- A running Home Assistant instance reachable from the tablet's network.
Install
- Open the Releases page and download the latest
app-release.apk. - Open the file. Android will ask you to allow installs from your browser or file manager the first time. Allow it.
- Install, then open superdash.
Connect to Home Assistant
On first launch you see a "Welcome to superdash" screen that says "Enter your Home Assistant URL to get started".
- Type your Home Assistant address in the
HA URLfield. The placeholder shows the expected form, for examplehomeassistant.local:8123. If you leave off the scheme,http://is assumed. Usehttps://...for a TLS host. - Tap
Continue. The app opens your Home Assistant login page. - Sign in with your Home Assistant account and approve access.
- Your dashboard loads. You are done for basic use.
Grant microphone access (optional)
The microphone is the only runtime permission the app asks for, and only if you turn on voice. It is not needed for the dashboard.
- Open Settings (swipe in from the screen edge), go to
Voice, and turn onVoice enabled. Android then prompts for microphone access. Allow it to use wake word and Home Assistant Assist.
Keep it running
For an always-on tablet:
- In Settings, open
Kioskand turn onKeep screen on. - The first time you run the app it prompts once to ignore battery optimizations.
Allow it so the app is not killed in the background. You can re-open this later
from Settings under
Adminwith theBattery saving helpbutton.
Optional: boot straight into the kiosk
This is optional. superdash works fine launched by hand from the app drawer. Set this up only if you want a wall-mounted tablet to boot straight into the dashboard.
- In Settings, open
Kioskand turn onLaunch on boot. - Make superdash your home app: open Android's own Settings, find the default home app or launcher setting, and choose superdash. superdash registers as a home app, so it then launches when the tablet powers on and when you press Home.
Explore Settings
Open Settings by swiping in from the screen edge. Top-level sections:
Voice: pick a wake word and, underLocal models, download the on-device speech-to-text and wake word models (tap the download icon next to a model).Screensaver: idle display, night mode, and the Immich photo slideshow underImmich photos.Doorbell: turn onDoorbell overlayto show a camera feed when a doorbell rings.ESPHome: turn onEnabledto expose superdash to Home Assistant over the ESPHome protocol so HA can read and control the kiosk.General: pick the app language.
Status & Disclaimers
This project is "vibe coded." It was built largely with an AI coding assistant (Claude Code) under human direction and review. Practically, that means:
- Expect AI-generated patterns and the occasional rough edge. Read the code before you rely on it.
- It is early-stage software (v0.1.x). Settings, interfaces, and behavior may change or break without notice.
No warranty. superdash is provided "as is", without warranty of any kind, to the extent permitted by the GPL-3.0 license. You run it at your own risk.
Security. superdash handles Home Assistant OAuth tokens, runs a foreground service, embeds a WebView, and exposes an ESPHome native API server on your local network. It has not been security audited. Run it only on networks and devices you trust, and review the code, permissions, and settings before pointing it at a home you care about.
Not affiliated. superdash is an independent, community-built project. It is not affiliated with or endorsed by Home Assistant, Nabu Casa, or any commercial kiosk product.
Packages
| Package | Purpose |
|---|---|
packages/app |
Android app, UI, wiring, services, settings. |
packages/camera |
Tablet camera pipeline and motion detection for the ESPHome camera entity. |
packages/core |
Shared logging and small utilities. |
packages/ha-client |
Home Assistant OAuth, tokens, WebSocket, Assist, media source. |
packages/voice |
Wake word, on-device STT (Whisper/Moonshine), local intents. |
packages/screensaver |
Screensaver and Immich photo slideshow. |
packages/doorbell |
Doorbell camera overlay. |
packages/esphome-server |
ESPHome native API server and mDNS announce. |
packages/immich-client |
Immich API client for slideshow photos. |
packages/kiosk-bus |
Internal event bus. |
See packages/README.md.
Building from source
Requirements
- JDK 17 on
PATH. - Android SDK installed.
Common Commands
./gradlew :packages:app:assembleDebug
./gradlew :packages:app:testDebugUnitTest
./gradlew :packages:ha-client:testDebugUnitTest
./gradlew :packages:esphome-server:testDebugUnitTest
./gradlew :packages:immich-client:testDebugUnitTest
./gradlew :packages:core:testDebugUnitTest
./gradlew ktlintCheck
Agent Entry Points
- Start with AGENTS.md.
- Architecture map: docs/architecture/README.md.
- Device testing: docs/agent-on-device-testing.md.
Current Control Surface
Home Assistant discovers the kiosk through ESPHome native API.
- Toggle in Settings:
Home Assistant ESPHome. - mDNS service:
_esphomelib._tcp. - TCP port:
6053. - Exposes switches, sensors, text sensors, numbers, selects, and buttons.
- Writable settings use app settings setters.
- One-shot actions use the event bus.
| Type | Entities |
|---|---|
| Switches | Keep screen on, start on boot, night mode, voice, doorbell, launch on wake. |
| Sensors | HA entity count, doorbell count. |
| Text sensors | HA state, voice state, selected modes, weather entity, media source, app version. |
| Numbers | VAD silence, idle timeout, picture spacing, doorbell auto-close. |
| Selects | Screensaver modes, overlay position, STT providers, Assist provider, wake word, media order. |
| Buttons | Refresh WebView, restart app, start screensaver, stop screensaver. |
Comments