Repository navigation
Releases: anivarhq/anivar
Release list
Anivar 0.1.7
Install
Download the installer for your platform below. Already running Anivar? Settings → App Updates → Install and restart updates it in place. Versions up to 0.1.5 predate in-app updates: install this release over them once, by hand.
The installers are not code-signed yet, so both operating systems
will stop you the first time. Windows shows "Windows protected your
PC" — click More info → Run anyway. macOS refuses an app that
isn't notarised: try to open it once, then go to System Settings →
Privacy & Security and click Open Anyway (or
xattr -dr com.apple.quarantine /Applications/Anivar.app).
Every file has a .sha256 beside it — see Verify your download.
Changes
The first release you can install from inside the app: on 0.1.6, open
Settings → App Updates → Install and restart.
Added
-
Home Assistant and MQTT. Point Anivar at an MQTT broker on your
network (for example Home Assistant's Mosquitto add-on), and each camera
shows up in Home Assistant by itself, with:- a motion sensor
- an online sensor
- the last thing it detected
Events are published as they start and end. Set it up in Settings →
Home Assistant / MQTT; Test connection checks the broker first. No
images or names of recognised people are sent. -
Turn remote access off, and see what you've shared. Settings →
Remote access now has Turn off, lists the share links that are live,
and can revoke all links at once. -
The first-run setup installs a detector. New installs used to finish
setup with nothing recognising objects. The last step now installs the
small YOLO26 model in one click, showing its licence. Live view also says
when no detector is installed.
Fixed
- "Anything in the last hour?" means the last hour. The assistant,
daily summary and Telegram counts were including every event from earlier
the same day. - The assistant never says "All clear" when it couldn't check. If the
archive can't be read, it now says so. Asking about one licence plate also
finds plates seen only rarely. - Long events play all the way through. Events over two minutes stopped
at two minutes, and short ones replayed their last seconds. - Exports that start while the camera was off begin where footage
resumes, instead of skipping into the recording. - Exports. "Last 24 hours" (which always failed) is now "Last 6 hours",
the longest single export. Exports also write straight to disk instead of
holding the whole video in memory. - Your saved keys and tokens are safer. If the encryption key file
can't be read, Anivar now moves it aside instead of overwriting it, never
sends an encrypted value as if it were the key, and Settings names any
secret you need to re-enter.
Anivar 0.1.6
Install
Download the installer for your platform below. Already running Anivar? Settings → App Updates → Install and restart updates it in place. Versions up to 0.1.5 predate in-app updates: install this release over them once, by hand.
The installers are not code-signed yet, so both operating systems
will stop you the first time. Windows shows "Windows protected your
PC" — click More info → Run anyway. macOS refuses an app that
isn't notarised: try to open it once, then go to System Settings →
Privacy & Security and click Open Anyway (or
xattr -dr com.apple.quarantine /Applications/Anivar.app).
Every file has a .sha256 beside it — see Verify your download.
Changes
Added
-
Updates install from inside the app. Settings → App Updates → Install
and restart downloads the new version, checks its signature against the key
built into Anivar, installs it and restarts. Two new switches sit beside it:- Check for updates automatically (on by default).
- Install updates automatically (off by default). An automatic install
waits until no event is being recorded, so a restart never cuts one off.
This is the last version you install by hand. 0.1.5 and earlier can't
update themselves: install 0.1.6 over the top once, and every later version
arrives through the app.
Fixed
- Links open in your browser. Links inside the app did nothing: release
notes, the Tailscale download, and links in the assistant's answers. They now
open in your default browser.
Security
- The Telegram bot answers only your chat. Until a Chat ID was saved, or
while it was written as an @username, the bot answered anyone who found it,
snapshots and clips included. It now serves only the chat you configured.
Anyone else gets their own chat ID back and nothing more. /pausecan't stop the app. A very large number made Anivar quit. Pauses
are now capped at 7 days, and the reply says so.
Anivar 0.1.5
Install
Download the installer for your platform below. Already running Anivar? Settings → Check for Updates shows when a new version is out and links to its installer. Installs don't update themselves yet.
The installers are not code-signed yet, so both operating systems
will stop you the first time. Windows shows "Windows protected your
PC" — click More info → Run anyway. macOS refuses an app that
isn't notarised: try to open it once, then go to System Settings →
Privacy & Security and click Open Anyway (or
xattr -dr com.apple.quarantine /Applications/Anivar.app).
Every file has a .sha256 beside it — see Verify your download.
Changes
Fixed
- "Test connection" in Add Camera works again. It runs
ffprobe, which was
never installed beside theffmpegAnivar downloads, and a computer with only
ffmpegon its PATH had the same gap, so every test failed with "program not
found". The two are now installed together, and a system ffmpeg is used only
when its ffprobe is there too. - The ffmpeg Anivar downloads is checked before it runs. It is pinned by
SHA-256 instead of fetching whatever "latest" was that day. On a Mac, an
ffmpeg installed with Homebrew or MacPorts is now found; before, recording
never started there. - The assistant no longer invents a time of day. Asked "what happened
today?" with every event in the late afternoon, it could say activity
"spanned from early morning". A reply that puts events in a part of the day
none of them happened in is now replaced by the plain findings. - Review shows your camera's name. Cards, the Vehicles and Sounds views and
the player said "CAM 1" for a camera you had named "Front door". - The Anonymize button appears only where it works. Depth-only recording
is available on USB cameras; on a network camera the button could only show
an error. - The privacy tooltip gives the Depth model's real size (about 50 MB, not
95). Thanks, @kragent66-glitch (#47).
Added
- Arsenal shows a model's licence on every card, not just the Enhancements
ones, wherever the licence is recorded. Thanks, @Tenkeren11 (#49). Some
models still lack one: #40 lists them, and help is welcome. - Quitting from the tray is written to the log, so a stop you chose no
longer looks the same as a crash to anyone reading it.
Under the hood
- llama.cpp, the on-device assistant's engine, and about twenty other
dependencies are updated.
Anivar 0.1.4
Install
Download the installer for your platform below. Already running Anivar? Settings → Check for Updates shows when a new version is out and links to its installer. Installs don't update themselves yet.
The installers are not code-signed yet, so both operating systems
will stop you the first time. Windows shows "Windows protected your
PC" — click More info → Run anyway. macOS refuses an app that
isn't notarised: try to open it once, then go to System Settings →
Privacy & Security and click Open Anyway (or
xattr -dr com.apple.quarantine /Applications/Anivar.app).
Every file has a .sha256 beside it — see Verify your download.
Changes
Security: a shared link could leave your server on the internet
- Sharing a clip opened a public tunnel that nothing ever closed. It
survived reboots, and even "Revoke all" left it open, so one shared link
could leave the whole server reachable from the internet indefinitely.
Revoking all shares now closes it, and so does the last share link
expiring. A tunnel you turned on yourself is left alone. - A forgotten sign-in page has been removed. It skipped the rate limiter,
stored its password without a salt, and handed back the master token.
Nothing in the app could ever set that password. - Fifteen bad requests could lock you out of your own app. The rate
limiter ran before the token check and counted requests by a header any
caller can set. The token is checked first now. - Camera passwords no longer appear in the logs, and the site check that
guards the local web address no longer accepts a lookalike domain. - Depth Anonymization is refused on network cameras instead of being shown
as on. Only USB cameras can record depth-only video; an RTSP camera kept
recording ordinary video while the screen said otherwise. - The firewall no longer opens ports 4002-4003. They belonged to a feature
that was removed, and the old rule is deleted.
Fixed
- Exporting a video works again. Every export failed because the app was
not allowed to write the file. - Today's recorded footage plays past the moment you opened it. It used to
stop at the time the panel was opened and refuse to go further. - Footage recovered after a database reset has its sound again. The
re-indexer forgot to record that a segment had audio, so it played silent. - ONVIF cameras that ask for a password can now be added. The sign-in used
the wrong hash, so it could never succeed with any camera. Network scanning
also missed cameras whose replies use a different XML style, and a password
containing@ : / #corrupted the stream address. - Network scanning now also asks each address directly, so it finds
cameras that don't answer a broadcast. - The update check links the installer for the system you are on.
Changed: less work per frame, and fewer stalls
- Motion detection decodes only the brightness of each frame (5.1 ms down
to 1.1 ms), and reads camera video in chunks rather than byte by byte. - Whether a recording has sound is read from the file itself instead of
starting ffmpeg for every ten seconds of video. - Every ffmpeg probe now has a time limit and is stopped if the app moves
on, so one stuck file cannot hold up indexing, playback or clip export. - Several screens stopped leaking work in the background: live view
releases its video connection when it falls back, the USB capture loop stops
when its screen closes, a seek is cancelled when you seek again, and a
five-hundred-row fetch that ran every two seconds into an unused field is
gone.
Anivar 0.1.3
Install
Download the installer for your platform below. Already running Anivar? Settings → Check for Updates shows when a new version is out and links to its installer. Installs don't update themselves yet.
The installers are not code-signed yet, so both operating systems
will stop you the first time. Windows shows "Windows protected your
PC" — click More info → Run anyway. macOS refuses an app that
isn't notarised: try to open it once, then go to System Settings →
Privacy & Security and click Open Anyway (or
xattr -dr com.apple.quarantine /Applications/Anivar.app).
Every file has a .sha256 beside it — see Verify your download.
Changes
Changed: the People section, rebuilt around visits
- People now answers "who was here?" It has three tabs. Today lists
visits: one continuous stay per person, across cameras. People is the
roster of people you've named. Review asks "Who is this?" once for each
person your cameras keep seeing but can't name. Name them once and every
sighting is theirs. When the app thinks it already knows someone, the card
asks "Is this Ravi?" instead. - Search for people by description in the search box: "blue top with a
backpack", "unfamiliar, no hat", or a name. Results are grouped by person, and
any visit can find others who look like that person. - Less for you to do. People no longer asks you to confirm body-appearance
matches or narrow face matches, and no longer shows match scores. Body
appearance still works in the background, linking a visit across cameras and
powering "find similar". To fix a wrong name, open that person and press
Not them on the shot; recognition learns from it. - Face pictures show the face. They were cut from the whole person, so
someone seated with an arm stretched out appeared as mostly wall.
Recognition never used that picture and is unchanged. Pictures saved before
this version are not redrawn.
Added: alerts about what people do
- New alerts for zone entry (someone steps into a zone set to "Alert when
someone enters"), climbing (feet going over a line marked as a fence),
running and person down. They follow each person over time instead of
judging single frames. Loitering now measures how long one person stays. - Zone entry and climbing are on by default, including after this update. If
you already set zones to "Alert when someone enters", you'll now get those
alerts; the setting existed before, but nothing sent them. Running and person
down start off. All of them are in Settings → Alerts. - By default these alerts skip people whose face was recognised. Person down is
the exception, because a resident on the floor is exactly who it's for. - Person down and climbing need the Body pose model below, and climbing
also needs a fence line drawn on the camera.
Added: optional models in Arsenal → Enhancements
- Deep person Re-ID (NVIDIA ReIdentificationNet), about 92 MB, downloaded
from NVIDIA when you install it: links a visit across cameras and powers
"find similar". - Body pose (MoveNet, Apache-2.0), about 9 MB: person down and climbing.
- Person attributes (PaddleClas PP-LCNet, Apache-2.0, trained on PA-100K),
about 7 MB: clothing, bags and accessories for search. It only judges someone
whose whole body is in frame and standing. A camera that sees people from the
chest up, like a desk camera, gives it nothing to judge, so those searches
won't match there.
Fixed
- The camera filter in People listed sixteen cameras no matter how many you
have. It lists your enabled cameras now. - Cards in People printed raw character codes such as
\u00b7instead of the
characters themselves.
Anivar v0.1.2
Install
Download the installer for your platform below. Already running Anivar? Settings → Check for Updates shows when a new version is out and links to its installer. Installs don't update themselves yet.
The installers are not code-signed yet, so both operating systems
will stop you the first time. Windows shows "Windows protected your
PC" — click More info → Run anyway. macOS refuses an app that
isn't notarised: try to open it once, then go to System Settings →
Privacy & Security and click Open Anyway (or
xattr -dr com.apple.quarantine /Applications/Anivar.app).
Every file has a .sha256 beside it — see Verify your download.
Changes
Fixed: recorded footage played in ten-second blocks
- Playback froze about ten seconds after every load or seek, and seeks landed
short. Recordings reach the player as ten-second pieces, and every piece
restarted its timestamps at zero. The player repaired the video but laid each
piece's audio over the first ten seconds, so it could never play past them.
Meanwhile it downloaded the rest of the hour trying to catch up, and the app
converted every piece of it. Each piece now carries its place in the
timeline. The fault was reproduced in Edge against real recordings with the
app's own player settings, and the fix was confirmed there and in the
installed app.
Changed: detection decodes each frame once
- The object detector decoded every camera frame for the model, then decoded the
same image a second time only to read its width and height. It now takes both
from the first decode: same pixels, same boxes, one full-resolution decode fewer
per detected frame.
Changed: the app icon is repainted
- Same geometry, two differences. The bar now sits beneath the letters instead of
cutting them in half at the waist, so a letter can be traced through the middle
of the mark. And the strokes are painted rather than drawn.
Changed: the update address, and what the notes say about updating
- The built-in updater was set to ask a domain that no longer exists. It now
points at the signedlatest.jsonthat every GitHub release publishes. - Nothing in the app calls that updater yet, so installs still don't update
themselves. To update, use Settings → Check for Updates: it shows the new
version and links to its installer. Earlier release notes said installs update
automatically. That was never true, and the notes now say how updating
actually works.
Added
- Permanent download links. Every installer is also published under a name
with no version in it (Anivar-windows-x64-setup.exe,Anivar-macos-arm64.dmg,
Anivar-linux-x86_64.AppImage,Anivar-linux-amd64.deb,
Anivar-linux-x86_64.rpm), so areleases/latest/download/…link keeps
pointing at the newest release.
Security
- rustls 0.23.45
(RUSTSEC-2026-0285).
The TLS library behind the app's HTTPS downloads and the updater accepted
TLS 1.3 handshake messages sent at the wrong encryption level. Fixed upstream in
0.23.45.
Anivar v0.1.1
Install
Download the installer for your platform below. Existing installs update automatically.
The installers are not code-signed yet, so both operating systems
will stop you the first time. Windows shows "Windows protected your
PC" — click More info → Run anyway. macOS refuses an app that
isn't notarised: try to open it once, then go to System Settings →
Privacy & Security and click Open Anyway (or
xattr -dr com.apple.quarantine /Applications/Anivar.app).
Every file has a .sha256 beside it — see Verify your download.
Changes
First release cut after installing 0.1.0 from its own installer rather than
running a dev build. Four defects surfaced in the first ten minutes, all of them
first-run problems that no dev build could have shown. Every one was traced
against the installed app's log before any code changed.
Fixed: the assistant was unreachable on a default install
- The chat sat on "I'm resting" no matter what you installed.
agent_enableddefaults tofalse, andprovider_readyshort-circuits on it
before it ever checks for a model — so a present, working 697 MB LLM reported
as not ready. The only thing that sets it true is Arsenal's Use button, and
that button could never appear:ai_providerandlocal_llm_tierboth default
to the on-device Balanced row, so it showed as "✓ In use" from first launch
and went straight from Install to "in use", skipping Use entirely. The
chat's own instruction — "Pick a model in Arsenal → Model (Use)" — pointed at
a button that could not exist. "In use" now also requires the agent to be on,
which additionally stops the row claiming it after Guardian is switched off.
Fixed: the audio model could never be installed
audio_yamnetfailed with "server returned only 14096 bytes — not a model
file". The server was fine. That file is the complete AudioSet class map, 522
lines, exactly whataudio.rsreads. The 64 KB weights floor was being applied
to every file in a skill, and YAMNet is the only one with a small sidecar; the
all-or-nothing rule then deleted the whole skill, including the 16 MB model that
had downloaded correctly. The floor now applies to weights only.- Sidecars are checked by shape instead of size, which is the stronger test:
it rejects an HTML error page at any size, including one over 64 KB that the
floor used to wave through to fail later as an opaque ONNX parse error. - Downloads now send a
User-Agent.reqwestsends none unless asked, and
several CDNs answer a UA-less request with an interstitial — HTTP 200, matching
content-length, an HTML body — which nothing upstream would have caught.
Fixed: "Application is not responding" on first launch
- Boot no longer downloads anything. The CUDA runtime — roughly 1.8 GB — was
fetched inside ablock_onon the thread that owns the window. Tauri shows the
window beforesetup()runs but does not pump its message loop until setup
returns, so that download was the hang: 30 seconds of it, measured. The Linux
lane already spawned the identical call. Boot now only puts an
already-installed runtime on the library path, which is a directory listing. - The orphaned-process sweep moved off the startup path. It waited on a cold
PowerShell + WMI query, seconds on a fresh install, on every machine. It now
runs inside the task that binds the stream port, preserving the ordering it
depends on.
Changed: one consent for the NVIDIA downloads, with the real number
- The TensorRT pack was offered as "~1.85 GB" while the installed directory
measures 4.4 GB, and the CUDA runtime beside it was never mentioned at all.
Both now sit behind the single existing prompt, which states the true
footprint. Decline it and detection still runs on DirectML.
Changed: onboarding stops implying a choice you don't have
- The welcome screen showed three chips — core count, GPU name, accelerator.
None were clickable, but side by side, two of them labelled CPU and GPU, they
read as a decision to make. Replaced with one sentence naming what will
actually run detection.
Added
- A wordmark for the app icon — an A and a V sharing one stroke, crossed by
the palette's single red as a scan line. Fluffy stays exactly where it belongs,
as the Guardian's face in the chat; the launcher, taskbar and installer now
carry the product's mark instead. - Tests pinning the download guard: a 14 KB CSV passes, a 14 KB HTML body does
not, a truncated.onnxdoes not. - A data-migration test that had never run. A stray
#[test]had attached to its
neighbour, leaving 43 lines asserting every legacy data-directory and database
name migrates correctly compiled as dead code.
Known
cuda/andtrt/overlap by ~1.76 GB across 14 files.cublasLtis
byte-identical in both; the cuDNN copies are different builds, so merging them
means reconciling two pinned versions — tracked, not guessed at.
Anivar v0.1.0
The first public release of Anivar — a local-first NVR with on-device AI. It
records your cameras, understands what it saw, and answers questions about it,
all on your own machine.
This is alpha. It works, and it has been run against real cameras, but the
APIs and the data-directory layout can still change between releases, and the
installers are not code-signed yet. Read Before you install
below before you double-click anything.
What's in the box
- Cameras — USB/built-in webcams, RTSP, MJPEG, and ONVIF discovery, with
sub-second live view over WebRTC. - 24/7 recording with a disk budget and retention, and a recorded-footage
player that seeks by wall clock across gaps. - Detection and recognition — objects, motion with polygon masks, faces with
track-consensus naming, person re-ID, licence plates, and audio events. - Search in plain language — "red shirt", "person with a package" — over the
archive, using CLIP embeddings of the detected object crop. - An assistant that answers from the database, not from memory. Ask what
happened last night and the query runs first; the model writes up what the rows
actually say. It runs on-device by default, and can use your own OpenAI,
Anthropic, Gemini, Groq, xAI or LM Studio key instead. - Privacy mode — optional per-camera depth-map anonymisation, enforced
server-side, so recordings and streams carry depth only.
Nothing leaves your machine unless you turn on a feature that sends it: a cloud
AI provider, Telegram, remote access, or a share link.
Install
| Platform | File |
|---|---|
| Windows 10/11, x64 | Anivar_0.1.0_x64-setup.exe — installs per-user, no admin |
| macOS 11+, Apple Silicon | Anivar_0.1.0_aarch64.dmg |
| Linux x86_64 | Anivar_0.1.0_amd64.AppImage, .deb, or .rpm |
One download per platform. The Windows installer carries the CUDA execution
provider and detects an NVIDIA card at runtime — there is no GPU edition to pick
between. Without one it uses DirectML on any DX12 GPU. macOS uses CoreML; Linux
runs detection on the CPU today.
Once installed, the app updates itself. The updater only accepts a manifest
signed with the project's key.
Before you install
The Windows and macOS builds are not signed by a certificate authority yet, so
both will stop you the first time:
- Windows shows "Windows protected your PC" — click More info →
Run anyway. - macOS refuses an app that isn't notarised. Try to open it once, then go to
System Settings → Privacy & Security and click Open Anyway. From a
terminal,xattr -dr com.apple.quarantine /Applications/Anivar.appdoes the
same thing.
Verify your download
Every file has a .sha256 beside it.
sha256sum -c Anivar_0.1.0_amd64.deb.sha256 # Linux
shasum -a 256 -c Anivar_0.1.0_aarch64.dmg.sha256 # macOS(Get-FileHash .\Anivar_0.1.0_x64-setup.exe -Algorithm SHA256).Hash # WindowsA SHA-256 is not a signature — anyone who could replace the installer could
replace the hash beside it. It catches a corrupted download and an altered
mirror. Real code signing needs a purchased certificate and is not done yet.
Known limitations
- No Intel-Mac build and no 32-bit build. Linux binaries need
webkit2gtk-4.1,
so Ubuntu 22.04 / Debian 12 or newer. - Linux runs detection on the CPU — no CUDA or ROCm lane there yet.
- The SQLite database is not encrypted. Secret settings fields are AES-GCM at
rest; everything else is plaintext, so use full-disk encryption if that matters
where the machine lives. - Face recognition stores biometric data.
PRIVACY.md
covers what that means for you if your cameras see anyone outside your own
household. - The first run asks which detector you want and shows each licence, because the
choice has consequences: the YOLO detectors are Ultralytics AGPL-3.0.
RF-DETR, RT-DETR, D-FINE and YOLOX are Apache-2.0 alternatives.
Everything that went into it
The full engineering detail — every fix, refactor and regression test — is in
CHANGELOG.md.
Found a security issue? Please report it privately through
GitHub's advisory form
rather than opening an issue.
