Skip to content

AgentNotify v0.0.2-alpha.1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Aug 14:59
· 53 commits to main since this release

This is a prerelease. It is intended for testing and evaluation: expect incomplete
features, breaking changes, and unsigned binaries. The mature 1.0.0 release is reserved for a
future stable milestone.

AgentNotify now runs on macOS and Linux, not just Windows.

Added

  • Headless broker for macOS and Linux (agentnotifyd). Runs the same broker the Windows tray
    process hosts — configuration, SQLite history, the durable delivery outbox, and the loopback
    /v1 API — without a desktop UI framework. Agents cannot tell the two apart: the CLI, the bearer
    token, and the API contract are identical on every platform.
  • Desktop notifications on macOS and Linux. notify-send on Linux, terminal-notifier or
    Notification Center on macOS, and a console fallback so a notification is never silently dropped
    when no graphical session exists, such as over SSH.
  • Per-platform provider secret protection. Windows continues to use DPAPI and never falls back.
    macOS stores the key in the login keychain, Linux in the Secret Service keyring via secret-tool,
    and either falls back to an owner-only key file with an explicit startup warning.
  • Self-contained binaries for five runtimeswin-x64, linux-x64, linux-arm64, osx-x64,
    and osx-arm64 — published as archives with SHA-256 checksums, alongside the Windows installer.
  • install.sh for macOS and Linux, which verifies the published checksum before installing and
    refuses to install anything it cannot verify.
  • Continuous integration on Linux and macOS runners, including a broker smoke test that
    exercises the API, keyed deduplication, owner-only file permissions, and SIGTERM shutdown.
  • New documentation: a CLI reference, a configuration reference, a troubleshooting guide, a
    macOS/Linux installation guide, and an index at docs/README.md.

Fixed

  • Local state could be written to the working directory on macOS and Linux. On Unix,
    Environment.GetFolderPath returns an empty string when the base directory does not exist yet —
    the normal state of a fresh account — which produced a relative path. The first run could
    therefore write config.json, containing the local bearer token, plus the secret key and the
    history database into whatever directory the broker was started from. The data directory is now
    always resolved to an absolute path.
  • agentnotifyd ignored SIGTERM. The signal registrations were discarded and finalized, which
    unhooked the handler; the broker neither shut down nor exited and could only be stopped with
    SIGKILL, making it unmanageable under systemd or launchd.
  • Shutdown could hang indefinitely on an unbounded delivery-dispatcher stop. Every shutdown step
    is now bounded, and a second signal exits immediately.
  • Configured sound file names were not sanitized consistently across platforms. Path.GetFileName
    treats a backslash as an ordinary character on Unix, so a Windows-style path in config.json
    survived unchanged there. Since configuration is portable between machines, normalization is now
    identical on every platform.

Security

  • Local state on Unix is created owner-only: the data directory 0700, and config.json,
    agentnotify.db, and secret.key 0600. config.json holds the local bearer token.
  • Desktop notification backends launch helper processes with an argument list rather than through a
    shell, and the macOS AppleScript is a fixed program that receives notification text through argv,
    so agent-supplied titles and messages cannot be interpreted as commands or script.

Known limitations

  • macOS and Linux have no tray icon, notification center window, or Settings UI. Configure the
    broker through config.json and use the CLI.
  • Neither graphical notification backend has been confirmed to display a notification on real
    hardware, and the Linux secret-tool path and the ARM64 binaries have not been executed.
    See docs/VERIFICATION.md for exactly what has and has not been observed.
  • Binaries remain unsigned. Windows may show a SmartScreen prompt, and macOS requires clearing the
    quarantine attribute on first run.

Install

Windows — download AgentNotifySetup.exe below and run it. No separate .NET runtime is needed.
The installer is not Authenticode-signed, so Windows may show a SmartScreen prompt.

macOS and Linux

curl -fsSL https://raw.githubusercontent.com/Akash97p/agent-notify/main/scripts/install.sh | sh

This verifies the published SHA-256 checksum before installing agentnotify and agentnotifyd
into ~/.local/bin. To install this exact version, set AGENTNOTIFY_VERSION=v0.0.2-alpha.1.
See Installing on macOS and Linux.

Verifying downloads

SHA256SUMS.txt covers the Windows installer. SHA256SUMS-portable.txt covers the portable
archives. Check a download before running it:

sha256sum -c SHA256SUMS-portable.txt --ignore-missing

Documentation

Getting started ·
CLI reference ·
API ·
Configuration ·
Troubleshooting ·
What is verified

Full commit log: v0.0.1-alpha.1...v0.0.2-alpha.1