-
v1.4.2
Stablereleased this
2026-07-19 00:00:01 +00:00 | 0 commits to main since this releaseAdded
- Header clock — server-local date, time, and UTC offset in RFC 5322 form
(e.g.Sat, 19 Jul 2026 07:58:03 +0800), right-aligned on the top border.
Especially useful on the web view, where the server's time zone isn't the
viewer's. Hidden when the terminal is too narrow to fit it and the title.
Changed
- Swap header field now shows used/total (
1.0GiB/4.0GiB (25%)) instead of
total-only.
Fixed
- Header fields no longer disappear on narrow terminals — the header rows
were fixed, so a long field (e.g. a full CPU model string) silently pushed
the fields after it (GPU model, driver version) off the row. Fields now
reflow dynamically across as many rows as the width needs.
Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
5 downloads
- Header clock — server-local date, time, and UTC offset in RFC 5322 form
-
v1.4.1
Stablereleased this
2026-07-18 23:47:43 +00:00 | 6 commits to main since this releaseFixed
- Web: every frame was fetched twice — the page preloaded each frame and
then re-assigned the visible image'ssrc; underCache-Control: no-store
the browser downloaded the same SVG again. The preloaded node is now swapped
into the DOM instead — one fetch per refresh.
Changed
- Web: responses are gzip-compressed when the client accepts it (the SVG
shrinks ~16×). Together with the double-fetch fix, polling traffic drops
roughly 30×. - README: web-frontend screenshot (
doc/screenshot-web.png) and a note on the
transport (plain HTTP polling once per refresh interval — no WebSocket).
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
3 downloads
- Web: every frame was fetched twice — the page preloaded each frame and
-
v1.4.0
Stablereleased this
2026-07-18 23:33:29 +00:00 | 8 commits to main since this releaseAdded
- Web frontend (
--web) — serves the dashboard as an auto-refreshing SVG
over HTTP behind Basic auth, with no terminal required. A headless backend
drives the existing curses drawing code against an off-screen recording
surface (colours flow through the_pair/_boldhooks, an SVG serializer
turns the captured ops into a page), so the browser view matches the TUI.
New flags:--web,--web-bind,--web-port,--web-user,--web-password
(password defaults to a random value printed at startup). Stdlib-only
(http.server+ a single-threaded sampler); history is in-memory for the
session. Newfrigate_top.webpackage with tests (tests/test_web.py).
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
3 downloads
- Web frontend (
-
v1.3.0
Stablereleased this
2026-07-18 22:37:02 +00:00 | 14 commits to main since this releaseAdded
- Scrollable graph area — when more sections are expanded than fit the
terminal, the graphs render into a scroll pad (header stays pinned) instead of
being clipped off the bottom. Scroll with↑/↓(orj/k),PgUp/PgDn,
Home/End; a▲▼ N%indicator shows position. Complements--auto-fit. - Unit-test suite (
tests/, stdlibunittest, 128 tests) covering value
formatting, the history resampler (incl. the anti-flicker regression guard),
the lm-sensors parser,build_graphs, the settings-file precedence, the
Frigate-API stats parser, thermal detection, the Monitor's decision logic
(auto-fit, thresholds, alerts), and graph rendering — bar heights, severity
colours, alert-below, axis, and the "no sensor" panel — driven through a fake
curses screen. Wired into CI and gated on releases. - CONTRIBUTING.md — a contributor guide (package layout + where-to-touch
recipes for adding a graph, a section, or a CLI option).
Changed
- Swap is now a header field (total size + used %) next to
Mem, instead of
the low-signalSwap %graph (which never showed the swap size). - Skipped-fps noise floor — sub-frame skipped rates are treated as 0 so the
graph/alert only fire on a real backlog. Tune with--frigate-skipped-floor
(default 1.0; 0 shows everything). - Now a Python package (
frigate_top/) split out of the old single
frigate_top.py, bundled into a single executablefrigate-top.pyz
(zipapp) for the single-file install. Still stdlib-only, zero dependencies.
Run asfrigate-top(installed),python3 frigate-top.pyz, or
python3 -m frigate_topfrom a checkout. The single-file download is now the
.pyzrelease asset rather than a raw.py.
Downloads
-
Source code (ZIP)
3 downloads
-
Source code (TAR.GZ)
3 downloads
- Scrollable graph area — when more sections are expanded than fit the
-
v1.2.0
Stablereleased this
2026-07-18 17:48:07 +00:00 | 22 commits to main since this releaseAdded
- THERMAL section — auto-detected CPU and system/board temperatures plus one
graph per active fan, read from/sys/class/hwmon(AMDk10temp, Intel
coretemp/PCH, ARMcpu_thermal, super-I/O boards) with anlm-sensors
fallback. Toggle witht(the custom-history prompt moved toc). The first
spinning fan is labelledCPU, the restSYS1/SYS2…; rename with
--fan-labels. Temperatures use a fixed 0–100 °C axis. New thresholds
--cpu-temp-warn/--sys-temp-warn; athermal_cpu_cCSV column. - Opt-in chassis-intrusion reporting via
--chassis-intrusion(off by
default; many boards latch a spurious ALARM). - GPU band — GPU util/mem/temp graphs moved out of SYSTEM into their own
collapsible GPU section (toggleg), shown only when a GPU is present. --auto-fit— expand as many sections as fit the terminal in a fixed
priority order (Frigate → System → GPU → Thermal → Network), recomputed on
resize; yields to manual toggles.--version/-vflag.- Settings file — an INI
[frigate-top]config read from--settings,
$FRIGATE_TOP_CONFIG,~/.config/frigate-top/config.ini, or
/etc/frigate-top/config.ini, with precedence CLI › env › file › default.
--write-configprints a commented starter. - New graphs — host Disk usage % and Frigate Recordings % (were
sampled but never drawn); NVMe drive temperature(s); GPU encoder/decoder
utilization (Frigate's ffmpeg hwaccel); Frigate CPU % / Frigate mem %
(Frigate's own footprint, from the API); host Swap %. --fahrenheit(°F display),--no-thermal,--check(health-check
mode: exit non-zero on any CRIT),--fan-max-rpm(fixed fan 100% mark),
--load-warn, and--cpu/sys/nvme-temp-critthresholds.- Section hotkey hints in each band header (e.g.
SYSTEM [s]).
Changed
- Network defaults to the aggregate of every non-loopback/virtual interface
(sum of per-interface deltas, each clamped);--net-ifacestill pins one. The
NETWORK band header shows the source (· all (3)or· enp42s0). - Frigate cameras graph is now a single online % series — green while all
cameras are online (100%), deep red the moment any drop, coloured per column so
the exact moment of a drop is visible. - Deep red is now reserved as the single "needs attention" colour across the
whole UI (crit/alert values, skipped frames, offline cameras). The Thermal
section moved off red to violet so red is never ambiguous.
Removed
- The "supported cameras" graph — the supported-camera estimate remains in the
header (Supported ~N); it didn't warrant a time-series.
Fixed
- Graph flicker on bursty series — the display resampler re-binned the whole
history window every frame, so network rx/tx (high-variance) appeared to
"invert" on each refresh while smooth graphs looked fine. Column bins are now
anchored to an absolute sample grid, so completed columns freeze and the graph
scrolls by whole columns.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
3 downloads
- THERMAL section — auto-detected CPU and system/board temperatures plus one
-
v1.1.0
Stablereleased this
2026-07-13 17:50:01 +00:00 | 39 commits to main since this releaseAdded
- SPDX license/author header on
frigate_top.py— a compactCopyright+
SPDX-License-Identifier: Apache-2.0block after the shebang, making the license and
authorship machine-readable at the source level and consistent withLICENSE,NOTICE,
and thepyproject.tomlmetadata. - README status badges — a centered header with a CI badge (from the Forgejo Actions
workflow) plus self-hosted, no-external-dependency SVG badges for license (Apache 2.0),
Python 3.7+, zero/stdlib dependencies, and platform (Linux), underimg/badges/.
Changed
- README presentation — restyled the header (centered title, tagline, badge row, and a
captioned dashboard screenshot); no changes to documented behaviour.
Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
4 downloads
- SPDX license/author header on
-
v1.0.0
Stablereleased this
2026-07-12 21:07:59 +00:00 | 42 commits to main since this releaseInitial public release — a low-dependency, stdlib-only terminal dashboard for Frigate NVR hosts.
Added
- Host + Frigate dashboard. Block-bar graphs for CPU, memory, disk I/O, network throughput +
errors, NVIDIA GPU (util / mem / temp, one set per detected GPU), CPU iowait, and load — plus
Frigate metrics: skipped frames, detector inference time, detection / camera FPS, online/offline
cameras, and a detector-throughput supported-camera estimate. - Boxed header table grouped into identity (host, uptime, OS, kernel), hardware (CPU, memory,
GPU model + driver), Frigate (version, cameras, supported estimate, detector), and
streams/storage — with a live warnings status line and a per-timeframe Detections breakdown
(person / vehicle / animal / recognised face / recognised plate) from/api/events. - Readable graphs — each plot fills the full width over the configured timeframe with a
-span … nowtime axis, severity-coloured fills and values (green / amber / red vs warn/crit
thresholds), dashed threshold guides,▲/▼/→trend arrows, an endpoint marker, midpoint axis
labels, andno sensorpanels for absent hardware.skipped fpsandNET errorsrender red on
any nonzero value. - Collapsible sections (
s/w/f), with System and Network collapsed by default so the
Frigate graphs fit smaller terminals; live terminal resizing is handled without dropping graphs. - Three renderers: block bars (default), dense Braille (
--braille), and plain ASCII (--ascii). - Auto-detection + overrides: finds the Frigate API (HTTP/HTTPS on common ports), all NVIDIA
GPUs, and the busiest disk / interface; pin them with--frigate-url,--disk,--net-iface. - CSV export (
--csv), a one-shot--snapshotfor headless / cron use, live history-timeframe
switching (1/5/p/t), and memory / network unit toggles (m/n). - Packaging — installable via the Forgejo PyPI registry with a
frigate-topentry point;
still runnable as a single stdlib-only script.
Security
- TLS certificates are verified for remote HTTPS Frigate instances; verification is relaxed only
for loopback hosts (where self-signed certs are the norm) or with--insecure. - The
--debuglog is written to a per-user directory ($XDG_RUNTIME_DIR) and opened with
O_NOFOLLOW, avoiding a predictable world-writable path. - Subprocess calls use fixed argument lists (no shell); YAML is parsed with
safe_load.
Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
1 download
- Host + Frigate dashboard. Block-bar graphs for CPU, memory, disk I/O, network throughput +