Releases: Akash97p/agent-notify
Release list
AgentNotify v0.0.4-alpha.1
This is a prerelease. It is intended for testing and evaluation: expect incomplete
features, breaking changes, and unsigned binaries. The mature1.0.0release is reserved for a
future stable milestone.
Adds AgentNotify Relay: a self-hostable service that carries notifications from your computers to
your phone, without routing them through somebody else's messaging product. Connecting a computer
is now a browser approval rather than a pasted token.
Relay is a separate open-source project —
github.com/Akash97p/agent-notify-relay — and is
documented at Relay. The mobile client and
the hosted Relay Go plan do not exist yet, and the desktop still sends an experimental opaque
transport rather than a sealed box, so end-to-end confidentiality is not yet delivered.
Added
- Browser-based AgentNotify Relay connection. The Windows Channels panel now discovers a Relay,
opens its approval page, displays a short verification code, polls with cancellation and bounded
retry, verifies the approved installation, and saves the one-time credential only when the
provider is saved. Manual credential entry remains under a collapsed Advanced section. - Headless Relay pairing.
agentnotify relay pairruns the same device-authorization handshake
on Windows, macOS, and Linux, whileagentnotify relay statusverifies saved Relay providers.
--jsonprovides line-delimited state transitions for scripts.
Security
- Relay discovery, pairing, verification, and delivery now share one redirect-free, proxy-free,
DNS-pinned HTTP transport. Browser approval URLs must match the configured Relay origin exactly;
polling and installation credentials are never placed in URLs, UI text, logs, or exceptions.
Fixed
- Relay test sends no longer submit a synthetic
relay-placeholder-deviceafter sender pairing.
An installation with no active phone now returnsno_devices_pairedlocally and the Channels UI
explains the required next step; an unknown pinned device is rejected before any envelope is sent. - Every Relay send failed with
relay_400. Two serialization details were rejected by the
Relay before any handler ran:expires_atusedDateTimeOffset.ToString("O"), which emits a
numeric offset instead of the trailingZthe schema accepted, and absent optional metadata was
written as an explicitnull. Timestamps now use theZform and nulls are omitted. - The route editor's provider dropdown showed a type name instead of each provider's name, so
every entry looked identical. The themed ComboBox draws the closed control from
SelectionBoxItemTemplate, whichDisplayMemberPathalone leaves empty; an explicit
ItemTemplatenow drives both the list and the selection. - Envelopes carried a
sender_idthat did not match the value sealed into the ciphertext. The
recipient rebuilds its authentication data from thesender_idit is given, so the mismatch
would have made every envelope fail authentication on the device once the transport is really
encrypted. Both now come from one value. - The setup window and settings header rendered a soft, low-resolution logo. Windows selects a
small icon frame for an image with an explicit size; on-screen logos now use the 512px source
while window and executable icons keep the multi-resolution.ico.
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 | shThis verifies the published SHA-256 checksum before installing agentnotify and agentnotifyd
into ~/.local/bin. To install this exact version, set AGENTNOTIFY_VERSION=v0.0.4-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-missingDocumentation
Getting started ·
CLI reference ·
API ·
Configuration ·
Troubleshooting ·
What is verified
Full commit log: v0.0.3-alpha.1...v0.0.4-alpha.1
AgentNotify v0.0.3-alpha.1
This is a prerelease. It is intended for testing and evaluation: expect incomplete
features, breaking changes, and unsigned binaries. The mature1.0.0release is reserved for a
future stable milestone.
Fixes a crash that could close the application, and adds an About section.
Fixed
- Selecting a saved provider in Settings closed the application.
JsonElement.TryGetInt32
throws rather than returning false for any value that is not a number, including JSONnull, and
optional provider settings are stored asnullwhen left blank. A Telegram provider saved
without a topic ID therefore threw when its row was selected, and because that handler runs
outside the panel's error boundary the exception terminated the tray process — taking the broker
and its local API with it. The same pattern affected eight settings across SMTP, Telegram,
Pushover, Twilio SMS, Twilio WhatsApp, and MQTT. - A successful provider test reported an error. Test send saves, sends, then reloads the
provider. The reload hit the same defect, so the failure appeared after the message had already
been delivered.
Added
- About section. A new About tab in Settings shows the application icon, name, version, what
AgentNotify is, a local-first summary, links to the repository, documentation, releases and
issues, the per-user data directory, and publisher, licence and unsigned-binary notes. The tray
menu gained an "About AgentNotify" entry that opens it. docs/BUG.md, a bug log recording the cause, fix and lesson for each defect found so far.
Changed
- Documentation no longer contains machine-specific filesystem paths, and every version reference
is aligned with the released version.
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 | shThis verifies the published SHA-256 checksum before installing agentnotify and agentnotifyd
into ~/.local/bin. To install this exact version, set AGENTNOTIFY_VERSION=v0.0.3-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-missingDocumentation
Getting started ·
CLI reference ·
API ·
Configuration ·
Troubleshooting ·
What is verified
Full commit log: v0.0.2-alpha.1...v0.0.3-alpha.1
AgentNotify v0.0.2-alpha.1
This is a prerelease. It is intended for testing and evaluation: expect incomplete
features, breaking changes, and unsigned binaries. The mature1.0.0release 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
/v1API — 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-sendon Linux,terminal-notifieror
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 viasecret-tool,
and either falls back to an owner-only key file with an explicit startup warning. - Self-contained binaries for five runtimes —
win-x64,linux-x64,linux-arm64,osx-x64,
andosx-arm64— published as archives with SHA-256 checksums, alongside the Windows installer. install.shfor 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, andSIGTERMshutdown. - New documentation: a CLI reference, a configuration reference, a troubleshooting guide, a
macOS/Linux installation guide, and an index atdocs/README.md.
Fixed
- Local state could be written to the working directory on macOS and Linux. On Unix,
Environment.GetFolderPathreturns 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 writeconfig.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. agentnotifydignoredSIGTERM. 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 inconfig.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, andconfig.json,
agentnotify.db, andsecret.key0600.config.jsonholds 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 throughargv,
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 throughconfig.jsonand use the CLI. - Neither graphical notification backend has been confirmed to display a notification on real
hardware, and the Linuxsecret-toolpath 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 | shThis 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-missingDocumentation
Getting started ·
CLI reference ·
API ·
Configuration ·
Troubleshooting ·
What is verified
Full commit log: v0.0.1-alpha.1...v0.0.2-alpha.1