explaingit

sf-grumpygeek/gawkr

Analysis updated 2026-05-18

5PythonAudience · ops devopsComplexity · 4/5LicenseSetup · hard

TLDR

Self-hosted AI for UniFi Protect that describes camera detections in plain language, reads license plates, identifies vehicles, and lets you search footage with natural language.

Mindmap

mindmap
  root((repo))
    What it does
      Describes detections
      Reads plates
      Identifies vehicles
      Natural language search
    Tech stack
      Python
      Docker
      Postgres pgvector
    Use cases
      Home security
      Push alerts
    Audience
      Self hosters
      Homelab users

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Get plain-language descriptions of every UniFi Protect camera detection.

USE CASE 2

Search camera footage using natural language like 'white truck at night'.

USE CASE 3

Identify vehicle make, model, and color from license plate events.

USE CASE 4

Get push notifications with a snapshot when a detection happens.

What is it built with?

PythonDockerPostgreSQLpgvectorllama.cpp

How does it compare?

sf-grumpygeek/gawkr1ncendium/aibusteraaronmayeux/ha-hurricane-tracker
Stars555
LanguagePythonPythonPython
Setup difficultyhardmoderateeasy
Complexity4/53/52/5
Audienceops devopsops devopsgeneral

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Requires a UniFi Protect API key, a local (non-cloud) account, and your own OpenAI-compatible vision model server.

Free and open forever, but if you modify it and let others use it over a network, you must share your source code changes too.

In plain English

Gawkr is a self-hosted tool that adds AI features to UniFi Protect, the security camera system from Ubiquiti. Instead of paying for the company's own AI add-ons, you run gawkr on your own hardware and it watches your Protect console for smart detections, then describes what happened in plain language using a vision model you host yourself. Beyond descriptions, gawkr can read license plates from car related events, identify a vehicle's make, model, color, and body type, and optionally transcribe audio from doorbell events if you connect a whisper speech to text server. Every event gets indexed so you can search your footage with plain language, like looking for a white truck at night or a person at the back door. It can also flag events that might involve a visible weapon or concerning behavior, and push alerts with a snapshot attached through Gotify, with support for more notification services planned. A web interface shows a live feed, search, and details for each event. Under the hood it is three Docker containers: one for Postgres with the pgvector extension to store events and their embeddings, one that connects to Protect and does the ingestion, and one serving the web interface. The vision model itself runs separately, wherever you already have it, and gawkr talks to it over any endpoint that speaks the OpenAI chat completions format, such as a llama.cpp server. Getting started means having UniFi Protect version 6.0 or newer, a local access account rather than a cloud login, a Protect API key, and a vision model server that can actually see images, since a text only model will not work. After filling in an env file with these details, a single docker compose command starts the whole stack, and a built in checker at slash api slash doctor can confirm everything is connected correctly. For access control, gawkr recommends putting it behind a reverse proxy you already run, or falling back to a single shared password if you do not have one. There are no user accounts or roles. The project is single tenant, meant for one household, and is released under the AGPL 3.0 or later license.

Copy-paste prompts

Prompt 1
Help me set up gawkr with a llama.cpp vision server for my UniFi Protect cameras.
Prompt 2
Write a docker-compose override to route gawkr through a reverse proxy with auth.
Prompt 3
Explain gawkr's architecture and how the bridge, database, and web containers interact.
Prompt 4
Help me debug why gawkr logs events but no snapshot images appear.

Frequently asked questions

What is gawkr?

Self-hosted AI for UniFi Protect that describes camera detections in plain language, reads license plates, identifies vehicles, and lets you search footage with natural language.

What language is gawkr written in?

Mainly Python. The stack also includes Python, Docker, PostgreSQL.

What license does gawkr use?

Free and open forever, but if you modify it and let others use it over a network, you must share your source code changes too.

How hard is gawkr to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is gawkr for?

Mainly ops devops.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.