Macha is now a standalone NixOS flake that can be imported into other systems. This provides: - Independent versioning - Easier reusability - Cleaner separation of concerns - Better development workflow Includes: - Complete autonomous system code - NixOS module with full configuration options - Queue-based architecture with priority system - Chunked map-reduce for large outputs - ChromaDB knowledge base - Tool calling system - Multi-host SSH management - Gotify notification integration All capabilities from DESIGN.md are preserved.
5.2 KiB
Gotify Notifications Setup
Macha's autonomous system can now send notifications to Gotify on Rhiannon for critical events.
What Gets Notified
High Priority (🚨 Priority 8)
- Critical issues detected - System problems requiring immediate attention
- Service failures - When critical services fail
- Failed actions - When an action execution fails
- Intervention required - When system status is critical
Medium Priority (📋 Priority 5)
- Actions queued for approval - When medium/high-risk actions need manual review
- System attention needed - When system status needs attention
Low Priority (✅ Priority 2)
- Successful actions - When safe actions execute successfully
- System healthy - Periodic health check confirmations (if enabled)
Setup Instructions
Step 1: Create Gotify Application on Rhiannon
-
Open Gotify web interface on Rhiannon:
# URL: http://rhiannon:8181 (or use external access) -
Log in to Gotify
-
Go to "Apps" tab
-
Click "Create Application"
-
Name it:
Macha Autonomous System -
Copy the generated Application Token
Step 2: Configure Macha
Edit /home/lily/Documents/gitrepos/nixos-servers/systems/macha.nix:
services.macha-autonomous = {
enable = true;
autonomyLevel = "suggest";
checkInterval = 300;
model = "llama3.1:70b";
# Gotify notifications
gotifyUrl = "http://rhiannon:8181";
gotifyToken = "YOUR_TOKEN_HERE"; # Paste the token from Step 1
};
Step 3: Rebuild and Deploy
cd /home/lily/Documents/gitrepos/nixos-servers
sudo nixos-rebuild switch --flake .#macha
Step 4: Test Notifications
Send a test notification:
macha-notify "Test" "Macha notifications are working!" 5
You should see this notification appear in Gotify on Rhiannon.
CLI Tools
Send Test Notification
macha-notify <title> <message> [priority]
# Examples:
macha-notify "Test" "This is a test" 5
macha-notify "Critical" "This is urgent" 8
macha-notify "Info" "Just FYI" 2
Priorities:
2- Low (✅ green)5- Medium (📋 blue)8- High (🚨 red)
Check if Notifications are Enabled
# View the service environment
systemctl show macha-autonomous.service | grep GOTIFY
Notification Examples
Critical Issue
🚨 Macha: Critical Issue
⚠️ Critical Issue Detected
High disk usage on /var partition (95% full)
Details:
Category: disk
Action Queued for Approval
📋 Macha: Action Needs Approval
ℹ️ Action Queued for Approval
Action: Restart failed service: ollama.service
Risk Level: low
Use 'macha-approve list' to review
Action Executed Successfully
✅ Macha: Action Success
✅ Action Success
Restart failed service: ollama.service
Output:
Service restarted successfully
Action Failed
❌ Macha: Action Failed
❌ Action Failed
Clean up disk space with nix-collect-garbage
Output:
Error: Insufficient permissions
Security Notes
-
Token Storage: The Gotify token is stored in the NixOS configuration. Consider using a secrets management solution for production.
-
Network Access: Macha needs network access to Rhiannon. Ensure your firewall allows HTTP traffic between them.
-
Token Scope: The Gotify token only allows sending messages, not reading or managing Gotify.
Troubleshooting
Notifications Not Appearing
-
Check Gotify is running on Rhiannon:
ssh rhiannon systemctl status gotify -
Test connectivity from Macha:
curl http://rhiannon:8181/health -
Verify token is set:
macha-notify "Test" "Testing" 5 -
Check service logs:
macha-logs service | grep -i gotify
Notification Spam
If you're getting too many notifications, you can:
-
Disable notifications temporarily:
services.macha-autonomous.gotifyUrl = ""; # Empty string disables -
Adjust autonomy level:
services.macha-autonomous.autonomyLevel = "auto-safe"; # Fewer approval notifications -
Increase check interval:
services.macha-autonomous.checkInterval = 900; # Check every 15 minutes instead of 5
Implementation Details
Files Modified
notifier.py- Gotify notification clientmodule.nix- Added configuration options and CLI toolorchestrator.py- Integrated notifications at decision pointsmacha.nix- Added Gotify configuration
Notification Flow
Issue Detected → AI Analysis → Decision Made → Notification Sent
↓
Queued or Executed → Notification Sent
Graceful Degradation
- If Gotify is unavailable, the system continues to operate
- Failed notifications are logged but don't crash the service
- Notifications have a 10-second timeout to prevent blocking
Future Enhancements
Possible improvements:
- Rate limiting to prevent notification spam
- Notification grouping (batch similar issues)
- Custom notification templates
- Priority-based notification filtering
- Integration with other notification services (email, SMS)
- Secrets management for tokens (agenix, sops-nix)