$ show variadico/noti
Noti is a cross-platform CLI tool written in Go that monitors the execution of a command (or a PID) and triggers notifications when it completes. It supports a wide array of notification services: desktop banners (macOS NSUserNotification via osascript, Linux Freedesktop via D-Bus, Windows tray icon via PowerShell), speech synthesis (macOS say, Linux espeak, Windows SpeechSynthesizer), and cloud services (Slack, Telegram, Twilio, Pushbullet, Pushover, Pushsafer, Simplepush, BearyChat, Keybase, Mattermost, Google Chat, Zulip, Chanify, ntfy, Bark). The architecture is a monolithic CLI built with Cobra and Viper. Configuration is sourced from YAML files (with schema validation), environment variables (with deprecated-var remapping), and CLI flags, following a clear precedence order. The codebase is well-tested, uses idiomatic Go, and demonstrates clean interface abstraction for extensible notification backends. The repository has moved to Codeberg but the GitHub mirror shows recent active development.
The LLM identified 3 files worth highlighting for reuse:
Self-contained Go package for sending notifications to an ntfy server. Defines a Notification struct with URL, topic, message, title, and optional bearer token. The Send method marshals the struct to JSON and POSTs it to the ntfy server, handling authentication via Authorization header. Only depends on standard library (encoding/json, errors, net/http). Can be extracted into any Go project with minimal changes to support ntfy-based notifications.
Complete Slack notification package supporting both legacy token-based API (slack.com/api/chat.postMessage) and modern Slack App webhooks (incoming webhook URL). The Notification struct includes fields for token, channel, text, username, icon, attachments, and more. Send method chooses the appropriate HTTP method based on whether AppURL is set. Only depends on standard library. Easily reusable as a standalone Slack messaging client in any Go application.
Keybase notification via the keybase CLI. The Notification struct holds conversation, channel, public flag, exploding lifetime, and message text. prepareArgs builds the command-line arguments for the 'keybase chat send' subcommand with proper flags. Send executes the binary. This pattern of wrapping an external CLI for notification is reusable for any service that provides a command-line interface. The package includes thorough argument validation and error handling.