SmartCam
Built for Home Assistant

The camera alarm you can trust.

SmartCam watches your cameras for a person moving around your home, and ignores the parked car, the lamp and the afternoon sun. When you're away it sends the snapshot and clip to your phone, and when the alarm is armed it lights up the cameras' red and blue warning lights.

SmartCam Alarm
Armed away · warning lights ready
Front door person
Detected
Living room person
Clear
Driveway lights
100% · person after dark
Parked car
Stationary · ignored
Person at driveway now
away, night, loitering in door zone

Fewer false alarms, no missed people

Replayed against a real home's labelled Frigate history: 305 cases from seven cameras, by day, at night, indoors and out.

252/252
real people alerted on by SmartCam
0
false person alarms from SmartCam
237/252
people alerted on by Frigate
6
false alarms from Frigate (a tree trunk, a parked car)

One home's footage, not a benchmark, and the cases were mostly sampled from Frigate's own events. The regression tools are in the repository, so you can run it on yours.

What it does

Everything a camera system needs to be useful, and nothing that wakes you up for a lamp.

The moving person wins

Every track carries its own evidence of how far it travelled. A person walking past a parked car is the alert; the car, which never moved, never is.

Lamp- and sun-proof

Motion is measured against each pixel's neighbourhood, so a lamp switching on or sunlight sweeping a wall isn't motion. A sudden whole-frame change is treated as lighting.

It learns your house

Spots where a "person" sits without ever moving, like a coat on a hook or a stack of tyres, are remembered and need much stronger evidence next time. Mark an event as a false alarm and its spot is remembered at once. And when the same box is a cat most of the time, it is never your burglar.

Suspicion, not just detection

Events are scored: away mode, night, loitering, door zones, a person seen on one camera and then the next. Only what matters reaches your phone.

Push with picture and clip

Notifications through the Home Assistant companion app, each with its own snapshot, followed by the clip with five seconds of lead-in. They work away from home too, and every picture and clip saves to your phone with one tap.

At home in Home Assistant

An alarm panel, a person sensor and a snapshot camera per camera appear automatically over MQTT. Already have an alarm switch your keypad and scripts use? SmartCam follows it, both ways.

An alarm, not just alerts

Arm it from the dashboard or your keypad, with an exit delay to leave and an entry delay to disarm. A person indoors while you're away, or someone loitering at the door at night, sets off the cameras' red and blue warning lights and a critical alert that sounds even on silent. Armed home at bedtime, it ignores the family indoors, warns you about anyone lurking outside, and disarms when you come down the stairs in the morning. Working from home, one switch makes every person outside a push, day or night.

Live cameras in your dashboards

One button adds every camera to Home Assistant as a live camera entity, streamed by Home Assistant itself, at home and away. Or open the wall view on a spare screen: every camera at once, and the one that sees someone lights up and grows. For a TV or an old tablet, SmartCam can put the wall together as one video.

Cameras that look after themselves

A camera whose stream dies is restarted on its own: power-cycled through a smart plug in Home Assistant, or rebooted through the camera's API. Their clocks are kept right too.

Lights on people after dark

Someone in the driveway at night? That camera's Home Assistant lights go to full, then back to exactly how they were two minutes after the person has gone.

Private when you're home

Indoor cameras record nothing while you're home, and pick up again when you leave. They still tell Home Assistant which rooms are occupied, people sitting still included, so your lights can follow you.

Presence simulation that learns

While armed, your lights replay a real evening from when you were home, the same kind of day, at its brightness, shifted with the season's sunset. Holidays replay your latest Sunday.

It knows who it is

Your Home Assistant family is always on the list; add the grandparents or the neighbour who feeds the cat. SmartCam learns faces from your events, carries a name from the front door to the garden when the clothes match, and says who it is in every push. Family isn't pushed while you work from home, and a known face never silences an alarm. Faces never leave the house.

Answer the alarm from the push

Every alarm, a break-in or a smoke detector going off, arrives with pictures from inside and two buttons: confirm it, and every light in the house goes to full while your speakers wail a siren, or mark it a false alarm and the warning lights go off. One more tap puts the lights and speakers back exactly as they were. Everyone sees who answered.

See who rang

Press the doorbell and everyone's phone shows the front door and the hall side by side in one picture, taken at the moment it rang.

Speed checks on your road

Two lines across the road and the distance between them: every passing car gets its speed, a full-resolution shot of the car where it was measured, a close-up and its licence plate, with a push above your limit.

Runs on what you have

YOLO11 on an NVIDIA GPU (GTX 10-series and newer), Intel graphics with OpenVINO (Core Ultra, Arc) or Apple Silicon, hardware video decoding on Intel graphics.

How it works

One container. go2rtc is the only thing that talks to your cameras; everything else reads its restreams.

01

Record

Main streams are copied to 10-second segments, continuously, with no re-encoding.

02

Watch

Sub streams are decoded at 5 fps and checked for real, lighting-robust motion.

03

Detect

YOLO11 finds people and vehicles in the full frame, more often while something moves.

04

Track

Tracks gather evidence: travel, in-box motion, how long they've stood still.

05

Decide

Confirmed people become events, scored for suspicion against zones, time and away mode.

06

Tell you

Home Assistant entities update, and above the threshold your phone gets the snapshot and clip.

Install

A Docker image is published for every commit. Your config stays on your server.

  1. Create a data folder and put your config in it as smartcam.yml, starting from the example config.
  2. Start the stack with docker compose up -d, or as a Portainer stack straight from the repository. On an Intel machine without NVIDIA, use the intel image and docker-compose.intel.yml (OpenVINO on the integrated graphics).
  3. Open the web UI on port 8971, or add it to the Home Assistant sidebar (below). Everything else is set up in its Settings tab.
Docker NVIDIA GPU (driver ≥ 525) or Intel graphics RTSP cameras Home Assistant + MQTT
# docker-compose.yml
services:
  smartcam:
    image: ghcr.io/ulfendk/smart-camera-home:latest
    restart: unless-stopped
    network_mode: host
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    volumes:
      - /srv/smartcam:/app/data   # smartcam.yml + recordings

The SmartCam add-on puts the web UI in Home Assistant's sidebar and the companion app, behind Home Assistant's login and wherever Home Assistant reaches, remote access included. It only forwards to your SmartCam server, so it is light enough for a Raspberry Pi. It needs Home Assistant OS or a Supervised install.

  1. Add the repository to the add-on store:

    Add to Home Assistant

    or by hand: Settings → Add-ons → Add-on Store → ⋮ → Repositories, and add https://github.com/ulfendk/smart-camera-home.
  2. Find SmartCam in the store (reload the page if it isn't there yet) and install it.
  3. On its Configuration tab, set server to your SmartCam address as Home Assistant sees it.
  4. Start the add-on and switch on Show in sidebar.
# add-on configuration
server: "http://192.168.1.10:8971"
# http:// or https://, host and port.
# Live view goes through the same address,
# so nothing else has to be reachable.

Inspired by Frigate

SmartCam exists because Frigate showed what a local, private NVR for Home Assistant can be. It borrows Frigate's best ideas: go2rtc restreaming, continuous recording with events on top, zones and masks in normalised coordinates, and MQTT entities. If you need face recognition, a mature UI or a large community, use Frigate. SmartCam is a smaller project with a narrower aim: fewer false alarms.

Support SmartCam

SmartCam is free and MIT licensed, built in spare evenings. If it keeps an eye on your home, you can say thanks.

Also built on go2rtc, Ultralytics YOLO11, ONNX Runtime, FFmpeg and Material Design Icons.