Local-first Discord notifications for Claude Code sessions - stay informed about your coding progress
Get real-time Discord notifications when Claude completes tasks, needs input, or makes progress on your projects. Simple local installation by default, with optional global setup for advanced multi-project workflows.
- 🏠 Local-first architecture - Self-contained installation per project
- 🌐 Global option available - Multi-project setup for advanced users
- 🎯 Project-scoped notifications - Each project controls its own Discord integration
- 🔔 Smart notification types - Input needed, work in progress, session complete
- 🧵 Thread support - Organize notifications by session with Discord threads
- ⚡ Easy control - Simple slash commands for setup and management
- 🛡️ Non-destructive setup - Preserves existing Claude Code configuration
- 🔧 Configurable webhooks - No hardcoded URLs, bring your own webhook
- 🐍 Python-enhanced commands - Unified architecture with consistent error handling (v0.4.0)
Perfect for single projects - everything installs to your current project with automatic setup:
cd your-project
curl -fsSL https://raw.githubusercontent.com/jubalm/claude-code-discord/main/install.sh | bashNew in v0.4.0: Python-enhanced slash commands with unified architecture, improved error handling, and consistent user experience!
Also in v0.3.2: Automatic hook registration! Discord hooks are now automatically registered in .claude/settings.json during local installation.
For managing multiple projects with shared Discord integration:
curl -fsSL https://raw.githubusercontent.com/jubalm/claude-code-discord/main/install.sh | bash -s -- --globalgit clone https://github.com/jubalm/claude-code-discord.git
cd claude-code-discord
chmod +x install.sh
./install.sh # Local installation
./install.sh --global # Global installation- Claude Code installed (global installation only)
- Python 3 (universally available)
curlorwgetfor installation- Discord webhook URL
- Go to your Discord server settings
- Navigate to Integrations → Webhooks
- Click New Webhook or use an existing one
- Copy the webhook URL
After installation, configure Discord integration:
# Setup Discord integration
/user:discord:setup https://discord.com/api/webhooks/YOUR_WEBHOOK_URL
# Enable notifications
/user:discord:start
# Check installation type
/user:discord:statusYou'll automatically receive Discord notifications when:
- 🔔 Claude needs input (blue notifications)
- ⚡ Claude makes progress (gold notifications after tool usage)
- ✅ Claude completes session (green notifications)
| Type | Color | Trigger | Description |
|---|---|---|---|
| 🔔 Input Needed | Blue | Claude awaits user input | Session paused, needs attention |
| ⚡ Work in Progress | Gold | After tool usage | File edits, commands, progress updates |
| ✅ Session Complete | Green | Claude finishes responding | Task completed successfully |
Python-Enhanced Slash Commands (v0.4.0) - Now with unified architecture, improved error handling, and consistent user experience:
| Command | Description |
|---|---|
/user:discord:setup WEBHOOK_URL [AUTH_TOKEN] [THREAD_ID] |
Setup Discord integration for project |
/user:discord:start [THREAD_ID] |
Enable Discord notifications |
/user:discord:stop |
Disable Discord notifications |
/user:discord:status |
Show current integration status |
/user:discord:remove |
Remove Discord integration from project |
- Comprehensive error handling - User-friendly messages for all edge cases
- Consistent formatting - Uniform output across all commands
- Better validation - Robust webhook URL and argument validation
- Installation detection - Automatic local vs global installation detection
- Safe configuration - Backup creation and selective updates
Local Installation: Each project is completely independent:
# Project A - local installation
cd /path/to/project-a
curl -fsSL .../install.sh | bash
/user:discord:setup https://discord.com/api/webhooks/DEV_WEBHOOK
# Project B - separate local installation
cd /path/to/project-b
curl -fsSL .../install.sh | bash
/user:discord:setup https://discord.com/api/webhooks/TEST_WEBHOOK TOKEN THREAD_IDGlobal Installation: Shared setup across projects:
# One-time global install
curl -fsSL .../install.sh | bash -s -- --global
# Then configure each project
cd project-a && /user:discord:setup DEV_WEBHOOK
cd project-b && /user:discord:setup TEST_WEBHOOK TOKEN THREAD_IDFor better organization, you can use Discord threads:
# Create a thread in Discord, copy its ID
/user:discord:start 1234567890123456789
# Or setup with thread from the beginning
/user:discord:setup YOUR_WEBHOOK_URL YOUR_AUTH_TOKEN 1234567890123456789Local Installation (Recommended):
# Commit Discord integration for team sharing
git add .claude/hooks/ .claude/commands/ .claude/settings.json
git commit -m "Add Discord notifications for team"
# .gitignore - exclude personal webhooks
echo ".claude/discord-state.json" >> .gitignore
echo ".claude/settings.json.backup*" >> .gitignore
# Team members just need to configure their webhook
/user:discord:setup https://discord.com/api/webhooks/THEIR_WEBHOOK
/user:discord:startGlobal Installation:
# Team lead sets up global installation
curl -fsSL .../install.sh | bash -s -- --global
# Commit project hooks only
git add .claude/settings.json
git commit -m "Add Discord hooks config"
# Each team member configures their webhook per project
/user:discord:setup THEIR_WEBHOOK
/user:discord:start-
Check if Discord integration is active:
/user:discord:status
-
Verify configuration files exist:
ls -la .claude/ # Should show: discord-state.json, settings.json -
Test webhook manually:
curl -X POST "YOUR_WEBHOOK_URL" \ -H "Content-Type: application/json" \ -d '{"content": "Test notification"}'
-
Check Claude Code logs:
tail -f ~/.claude/discord-notifications.log
-
Check installation type and verify scripts:
/user:discord:status # Shows Local or Global installation # For local installation ls -la .claude/hooks/*discord*.py # For global installation ls -la ~/.claude/hooks/*discord*.py
-
Test script manually:
# Local echo '{}' | .claude/hooks/stop-discord.py # Global echo '{}' | ~/.claude/hooks/stop-discord.py
-
Fix permissions if needed:
chmod +x .claude/hooks/*discord*.py # Local chmod +x ~/.claude/hooks/*discord*.py # Global
-
Verify commands based on installation type:
# Local ls .claude/commands/discord/ # Global ls ~/.claude/commands/discord/
-
Restart Claude Code to reload commands
-
Check installation type:
/user:discord:status
Remove Discord integration from current project:
curl -fsSL https://raw.githubusercontent.com/jubalm/claude-code-discord/main/uninstall.sh | bash
# Or use slash command
/user:discord:removeRemove global Discord integration (affects all projects):
curl -fsSL https://raw.githubusercontent.com/jubalm/claude-code-discord/main/uninstall.sh | bash -s -- --global# Local installation
rm -rf .claude/hooks/*discord*.py .claude/commands/discord/
rm -f .claude/discord-state.json
# Global installation
rm -f ~/.claude/hooks/*discord*.py
rm -rf ~/.claude/commands/discord- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details.
Happy coding with Discord notifications! 🚀