Skip to content

Releases: anivarhq/anivar

Anivar 0.1.7

Choose a tag to compare

@github-actions github-actions released this 03 Oct 22:26
6865470

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

Choose a tag to compare

@github-actions github-actions released this 30 Sep 16:03
d81dc59

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.
  • /pause can'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

Choose a tag to compare

@github-actions github-actions released this 28 Sep 07:38
7e82802

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

Anivar's live view: four cameras in a grid

Fixed

  • "Test connection" in Add Camera works again. It runs ffprobe, which was
    never installed beside the ffmpeg Anivar downloads, and a computer with only
    ffmpeg on 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

Choose a tag to compare

@github-actions github-actions released this 24 Sep 22:09
bc47672

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

Choose a tag to compare

@github-actions github-actions released this 16 Sep 19:05
dcc0eb9

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 \u00b7 instead of the
    characters themselves.

Anivar v0.1.2

Choose a tag to compare

@github-actions github-actions released this 14 Sep 22:15
c8546b0

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 signed latest.json that 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 a releases/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

Choose a tag to compare

@github-actions github-actions released this 09 Sep 16:52

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_enabled defaults to false, and provider_ready short-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_provider and local_llm_tier both 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_yamnet failed 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 what audio.rs reads. 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. reqwest sends 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 a block_on on the thread that owns the window. Tauri shows the
    window before setup() 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 .onnx does 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/ and trt/ overlap by ~1.76 GB across 14 files. cublasLt is
    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

Choose a tag to compare

@github-actions github-actions released this 09 Sep 06:44

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.app does 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   # Windows

A 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.