# toasty **Repository Path**: ooomyself/toasty ## Basic Information - **Project Name**: toasty - **Description**: 一个小小的Windows toast通知命令行,它知道如何钩到Coding Agents,所以当它们长时间运行的任务完成时,你会得到通知。229 KB,没有依赖项。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-27 - **Last Updated**: 2026-02-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Toasty Toasty mascot A tiny Windows toast notification CLI that knows how to hook into Coding Agents so you get notified when their long running tasks are finished. 229 KB, no dependencies. ## Quick Start ```cmd toasty "Hello World" -t "Toasty" ``` That's it. Toasty auto-registers on first run. ## Usage ``` toasty [options] toasty --install [agent] toasty --uninstall toasty --status Options: -t, --title Set notification title (default: "Notification") --app Use AI CLI preset (claude, copilot, gemini, codex, cursor) -v, --version Show version and exit -h, --help Show this help --install [agent] Install hooks for AI CLI agents (claude, gemini, copilot, or all) --uninstall Remove hooks from all AI CLI agents --status Show installation status --dry-run Show what would happen without executing side effects ``` ## Supported AI Agents | Agent | Icon | Auto-Detect | `--install` | Hook Type | Config Location | |-------|:----:|:-----------:|:-----------:|-----------|-----------------| | Claude Code | ✅ | ✅ | ✅ | `Stop` | `~/.claude/settings.json` | | GitHub Copilot | ✅ | ✅ | ✅ | `sessionEnd` | `.github/hooks/toasty.json` | | Gemini CLI | ✅ | ✅ | ✅ | `AfterAgent` | `~/.gemini/settings.json` | | OpenAI Codex | ✅ | ✅ | ✅ | `notify` | `~/.codex/config.toml` | - **Icon**: Built-in icon for toast notifications - **Auto-Detect**: Toasty recognizes the agent's process and applies the preset automatically - **`--install`**: `toasty --install` can automatically configure the agent's hook > Don't see your agent? Any CLI tool with a hook/notification mechanism can call toasty directly. ## Auto-Detection Toasty automatically detects when it's called from a known AI CLI tool and applies the appropriate icon and title. No flags needed! ```cmd # Called from Claude - automatically uses Claude preset toasty "Analysis complete" # Called from Copilot - automatically uses Copilot preset toasty "Code review done" ``` ### Manual Preset Selection Override auto-detection with `--app`: ```cmd toasty "Processing finished" --app claude toasty "Build succeeded" --app copilot toasty "Query done" --app gemini ``` ## One-Click Hook Installation Toasty can automatically configure AI CLI agents to show notifications when tasks complete. > 📖 **Want more control?** See [HOOKS.md](HOOKS.md) for all available hook events (permission requests, errors, session lifecycle, etc.) ### Auto-Install ```cmd # Install for all detected agents toasty --install # Install for specific agent toasty --install claude toasty --install gemini toasty --install copilot # Check what's installed toasty --status # Remove all hooks toasty --uninstall ``` ### Example Output ``` Detecting AI CLI agents... [x] Claude Code found [x] Gemini CLI found [ ] GitHub Copilot (in current repo) Installing toasty hooks... [x] Claude Code: Added Stop hook [x] Gemini CLI: Added AfterAgent hook Done! You'll get notifications when AI agents finish. ``` ## Manual Integration If you prefer to configure hooks manually: ### Claude Code Add to `~/.claude/settings.json`: ```json { "hooks": { "Stop": [ { "hooks": [ { "type": "command", "command": "C:\\path\\to\\toasty.exe \"Claude finished\"", "timeout": 5000 } ] } ] } } ``` ### Gemini CLI Add to `~/.gemini/settings.json`: ```json { "hooks": { "AfterAgent": [ { "hooks": [ { "type": "command", "command": "C:\\path\\to\\toasty.exe \"Gemini finished\"", "timeout": 5000 } ] } ] } } ``` ### GitHub Copilot Add to `.github/hooks/toasty.json`: ```json { "version": 1, "hooks": { "sessionEnd": [ { "type": "command", "bash": "toasty 'Copilot finished'", "powershell": "toasty.exe 'Copilot finished'", "timeoutSec": 5 } ] } } ``` ## Push Notifications (ntfy) Get push notifications on your phone when AI agents finish — even when you're away from your desk. Uses [ntfy.sh](https://ntfy.sh), a free, open-source notification service. No account or API key required. ### Setup 1. Install the [ntfy app](https://ntfy.sh) on your phone (iOS/Android) 2. Subscribe to a topic of your choice (use something unique and hard to guess) 3. Set the environment variable: ```cmd set TOASTY_NTFY_TOPIC=my-secret-toasty-topic ``` That's it. Now every toast notification also sends a push to your phone. ### Self-Hosted Server If you run your own [ntfy server](https://docs.ntfy.sh/install/), point toasty at it: ```cmd set TOASTY_NTFY_SERVER=ntfy.example.com ``` Default server is `ntfy.sh` if not set. ### How It Works - Toasty checks for `TOASTY_NTFY_TOPIC` on each run - If set, it sends an HTTPS POST to `ntfy.sh/` (or your custom server) with the notification title and message - The request has a 5-second timeout — if the service is down or the network is slow, toasty won't hang - If anything goes wrong with the push notification, the local toast still shows normally ### Example ```cmd # Set once (add to your shell profile) set TOASTY_NTFY_TOPIC=scotts-coding-notifications # Now every toasty notification also goes to your phone toasty "Claude finished analysis" --app claude ``` ## Update Notifications Toasty automatically checks for new versions once per day. If an update is available, you'll see: - A message in your terminal: `Update available: v0.3 → v0.4 (https://github.com/shanselman/toasty/releases)` - A clickable toast notification that opens the releases page The check is non-blocking (5-second timeout), throttled to once every 24 hours, and silently skips if offline. It never auto-updates — you download the new version yourself. Check your current version anytime: ```cmd toasty --version ``` ## Building Requires Visual Studio 2022 with C++ workload. ```cmd cmake -S . -B build -G "Visual Studio 17 2022" -A x64 cmake --build build --config Release ``` Output: `build\Release\toasty.exe` ## Testing Run the test suite after building: ```cmd .\tests\test-toasty.ps1 -ExePath .\build\Release\toasty.exe ``` Tests use `--dry-run` to validate argument parsing, preset icons, toast XML generation, install/uninstall logic, and ntfy configuration without showing actual notifications or modifying any config files. ## License MIT