Fork me on GitHub

Local-first Android display

Your cameras.
Right when needed.

Turn an older Android tablet into a focused media screen that Home Assistant can wake, control, and switch off — entirely across your local network.

Android 6+ARMv7Local HTTP API
LIVE CAM 01
20:14:37 · LOCAL
Motion detectedCamera 1 · just now
No cloud subscriptionNo Home Assistant dashboard UINo internet required for local playback

Purpose-built

A display that stays out of the way.

HARM does one job well: receive commands and show media without turning your wall tablet into another dashboard to maintain.

Native RTSP playback

LibVLC over TCP handles Intelbras camera streams directly, without routing video through a browser.

Automatic recovery

A playback watchdog detects stalled streams and reconnects to the same camera automatically.

Remote screen control

Wake the display, adjust brightness, stop playback, or switch the screen off from an automation.

Home Assistant ready

Simple REST commands make HARM usable from automations, scripts, scenes, and sensor events.

Camera discovery

Connect to a compatible NVR, discover available channels, select cameras, and preview them locally.

Idle by design

When nothing needs attention, HARM presents a neutral black screen or powers the display off.

Event-driven

From motion to visibility in one flow.

  1. 01
    A sensor changes state

    A camera or any Home Assistant entity detects an event.

  2. 02
    Home Assistant calls HARM

    The automation selects a channel and display duration.

  3. 03
    The tablet wakes and plays

    HARM connects directly to the local stream in full screen.

  4. 04
    The display returns to rest

    Playback stops and the screen can switch off automatically.

Straightforward automation

Control it with familiar HA actions.

Call one REST command with a channel and timeout. HARM handles waking, playback, and stream recovery on the tablet.

Read the integration guide ↗
automation.yaml
# Show camera 1 for 30 seconds
action: rest_command.harm_camera
data:
  channel: 1
  timeout: 30

# Then turn the screen off
action: rest_command.harm_screen_off
HARM icon

Private by default

Designed for a trusted local network.

Camera credentials stay on the tablet, Android backup is disabled, and the control API uses a device-generated token. Keep port 8765 inside your LAN and never expose it through your router.

Read the security policy ↗

Give old hardware a focused job

Make your tablet useful again.

Download HARM, connect your NVR, and let Home Assistant decide when the screen should come alive.