Note: This was a quick ai-assisted CLI app to send Discord notifications to my phone when I kick off long-running processes on my computer. The reasoning behind the name is to match the theme of my discord profile which is a goblin and themed around goblins (mostly from magic the gathering).
A Discord notification system for command execution monitoring. Get notified on Discord (and your phone via the Discord mobile app) when your commands complete, with detailed execution metrics.
# Clone the repo
git clone https://github.com/VBoudreau55/goblin-messenger.git
cd goblin-messenger
# Install with uv
uv sync
# Use the CLI
uv run goblinmsg --help
# Or use the short alias
uv run gmsg --help# Clone the repo
git clone https://github.com/VBoudreau55/goblin-messenger.git
cd goblin-messenger
# Install the package
pip install -e .
# Use the CLI (both commands work)
goblinmsg --help
gmsg --help- Open Discord and go to a server where you have admin permissions
- Right-click a channel β Edit Channel β Integrations β Webhooks
- Create a new webhook and copy the URL
- Install Discord mobile app and enable notifications for that channel
goblinmsg save my-phone https://discord.com/api/webhooks/YOUR_WEBHOOK_URL --set-default
# Or use the short alias
gmsg save my-phone https://discord.com/api/webhooks/YOUR_WEBHOOK_URL --set-default# Get notified when it completes
goblinmsg run npm run build
# Get notified at start AND completion
goblinmsg run --notify-start python train_model.py
# Include command output in the notification
gmsg run --output pytest tests/gmsg send "Build finished! π"Save a Discord webhook URL.
goblinmsg save <name> <url> [--set-default]Send a message to Discord.
gmsg send <message> [--webhook NAME] [--username USERNAME]Execute a command and send completion notification.
goblinmsg run [OPTIONS] <command>Options:
--webhook, -w: Specify webhook to use (uses default if not specified)--notify-start: Send notification when command starts--output, -o: Include stdout/stderr in notification (off by default)--no-stream: Do not stream output to terminal; capture output instead (by default, output is streamed to your terminal)
Note: If your command includes flags that start with -, use -- to separate them from goblin-messenger's options:
goblinmsg run -- ls -l
goblinmsg run -- python -m mymodule --flag valueThis prevents the CLI from misinterpreting command flags as its own options.
Set a saved webhook as the default.
goblinmsg set-default <name>List all saved webhooks (shows which is default).
goblinmsg listDelete a saved webhook.
goblinmsg delete <name>goblinmsg run --notify-start npm run buildgmsg send "π¨ Production deployment complete" --username "Deploy Bot"goblinmsg run --output python script.pygoblinmsg run python script.py
# Output from script.py will appear live in your terminalgoblinmsg run --no-stream python script.py
# Output will not appear live; it will be captured and sent in the notification (if --output is used)# Save webhooks for different channels
goblinmsg save personal https://discord.com/api/webhooks/... --set-default
goblinmsg save work https://discord.com/api/webhooks/...
# Use specific webhook
gmsg send "Personal reminder" --webhook personal
# Change default
goblinmsg set-default workUse PowerShell commands for testing:
goblinmsg run timeout /t 5
gmsg run powershell -Command "Start-Sleep -Seconds 10"
goblinmsg run sleep 5
gmsg run ./long-script.shThe notification includes:
- β /β Success/failure status emoji
- Command executed
- Exit code
- Duration in seconds
- CPU usage percentage
- Memory usage in MB
- stdout/stderr (only if
--outputflag is used, truncated to 500 chars each)
Built with:
- Typer: CLI framework
- SQLModel: ORM for webhook storage
- SQLite: Local database (~/.goblin-messenger/webhooks.db)
- psutil: Process monitoring
- httpx: Discord API client
- Pydantic: Input validation
AI Disclaimer: This project was built with significant AI assistance for rapid prototyping and learning.
See LICENSE file.