Files
macha-autonomous/EXAMPLES.md
Lily Miller 22ba493d9e Initial commit: Split Macha autonomous system into separate flake
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.
2025-10-06 14:32:37 -06:00

276 lines
6.4 KiB
Markdown

# Macha Autonomous System - Configuration Examples
## Basic Configurations
### Conservative (Recommended for Start)
```nix
services.macha-autonomous = {
enable = true;
autonomyLevel = "suggest"; # Require approval for all actions
checkInterval = 300; # Check every 5 minutes
model = "llama3.1:70b"; # Most capable model
};
```
### Moderate Autonomy
```nix
services.macha-autonomous = {
enable = true;
autonomyLevel = "auto-safe"; # Auto-fix safe issues
checkInterval = 180; # Check every 3 minutes
model = "llama3.1:70b";
};
```
### High Autonomy (Experimental)
```nix
services.macha-autonomous = {
enable = true;
autonomyLevel = "auto-full"; # Full autonomy
checkInterval = 300;
model = "llama3.1:70b";
};
```
### Monitoring Only
```nix
services.macha-autonomous = {
enable = true;
autonomyLevel = "observe"; # No actions, just watch
checkInterval = 60; # Check every minute
model = "qwen3:8b-fp16"; # Lighter model is fine for observation
};
```
## Advanced Scenarios
### Using a Smaller Model (Faster, Less Capable)
```nix
services.macha-autonomous = {
enable = true;
autonomyLevel = "auto-safe";
checkInterval = 120;
model = "qwen3:8b-fp16"; # Faster inference, less reasoning depth
# or
# model = "llama3.1:8b"; # Also good for simple tasks
};
```
### High-Frequency Monitoring
```nix
services.macha-autonomous = {
enable = true;
autonomyLevel = "auto-safe";
checkInterval = 60; # Check every minute
model = "qwen3:4b-instruct-2507-fp16"; # Lightweight model
};
```
### Remote Ollama (if running Ollama elsewhere)
```nix
services.macha-autonomous = {
enable = true;
autonomyLevel = "suggest";
checkInterval = 300;
ollamaHost = "http://192.168.1.100:11434"; # Remote Ollama instance
model = "llama3.1:70b";
};
```
## Manual Testing Workflow
1. **Test with a one-shot run:**
```bash
# Run once in observe mode
macha-check
# Review what it detected
cat /var/lib/macha-autonomous/decisions.jsonl | tail -1 | jq .
```
2. **Enable in suggest mode:**
```nix
services.macha-autonomous = {
enable = true;
autonomyLevel = "suggest";
checkInterval = 300;
model = "llama3.1:70b";
};
```
3. **Rebuild and start:**
```bash
sudo nixos-rebuild switch --flake .#macha
sudo systemctl status macha-autonomous
```
4. **Monitor for a while:**
```bash
# Watch the logs
journalctl -u macha-autonomous -f
# Or use the helper
macha-logs service
```
5. **Review proposed actions:**
```bash
macha-approve list
```
6. **Graduate to auto-safe when comfortable:**
```nix
services.macha-autonomous.autonomyLevel = "auto-safe";
```
## Scenario-Based Examples
### Media Server (Let it auto-restart services)
```nix
services.macha-autonomous = {
enable = true;
autonomyLevel = "auto-safe"; # Auto-restart failed arr apps
checkInterval = 180;
model = "llama3.1:70b";
};
```
### Development Machine (Observe only, you want control)
```nix
services.macha-autonomous = {
enable = true;
autonomyLevel = "observe";
checkInterval = 600; # Check less frequently
model = "llama3.1:8b"; # Lighter model
};
```
### Critical Production (Suggest only, manual approval)
```nix
services.macha-autonomous = {
enable = true;
autonomyLevel = "suggest";
checkInterval = 120; # More frequent monitoring
model = "llama3.1:70b"; # Best reasoning
};
```
### Experimental/Learning (Full autonomy)
```nix
services.macha-autonomous = {
enable = true;
autonomyLevel = "auto-full";
checkInterval = 300;
model = "llama3.1:70b";
};
```
## Customizing Behavior
### The config file lives at:
`/etc/macha-autonomous/config.json` (auto-generated from NixOS config)
### To modify the AI prompts:
Edit the Python files in `systems/macha-configs/autonomous/`:
- `agent.py` - AI analysis and decision prompts
- `monitor.py` - What data to collect
- `executor.py` - Safety rules and action execution
- `orchestrator.py` - Main control flow
After editing, rebuild:
```bash
sudo nixos-rebuild switch --flake .#macha
sudo systemctl restart macha-autonomous
```
## Integration with Other Services
### Example: Auto-restart specific services
The system will automatically detect and propose restarting failed services.
### Example: Disk cleanup when space is low
Monitor will detect low disk space, AI will propose cleanup, executor will run `nix-collect-garbage`.
### Example: Log analysis
AI analyzes recent error logs and can propose fixes based on error patterns.
## Debugging
### See what the monitor sees:
```bash
sudo -u macha-autonomous python3 /nix/store/.../monitor.py
```
### Test the AI agent:
```bash
sudo -u macha-autonomous python3 /nix/store/.../agent.py test
```
### View all snapshots:
```bash
ls -lh /var/lib/macha-autonomous/snapshot_*.json
cat /var/lib/macha-autonomous/snapshot_$(ls -t /var/lib/macha-autonomous/snapshot_*.json | head -1) | jq .
```
### Check approval queue:
```bash
cat /var/lib/macha-autonomous/approval_queue.json | jq .
```
## Performance Tuning
### Model Choice Impact:
| Model | Speed | Capability | RAM Usage | Best For |
|-------|-------|------------|-----------|----------|
| llama3.1:70b | Slow (~30s) | Excellent | ~40GB | Complex reasoning |
| llama3.1:8b | Fast (~3s) | Good | ~5GB | General use |
| qwen3:8b-fp16 | Fast (~2s) | Good | ~16GB | General use |
| qwen3:4b | Very Fast (~1s) | Moderate | ~8GB | Simple tasks |
### Check Interval Impact:
- 60s: High responsiveness, more resource usage
- 300s (default): Good balance
- 600s: Low overhead, slower detection
### Memory Usage:
- Monitor: ~50MB
- Agent (per query): Depends on model (see above)
- Executor: ~30MB
- Orchestrator: ~20MB
Total continuous overhead: ~100MB + model inference when running
## Security Considerations
### The autonomous user has sudo access to:
- `systemctl restart/status` - Restart services
- `journalctl` - Read logs
- `nix-collect-garbage` - Clean up Nix store
### It CANNOT:
- Modify arbitrary files
- Access user home directories (ProtectHome=true)
- Disable protected services (SSH, networking)
- Make changes without logging
### Audit trail:
All actions are logged in `/var/lib/macha-autonomous/actions.jsonl`
### To revoke access:
Set `enable = false` and rebuild, or stop the service.
## Future: MCP Integration
You already have MCP servers installed:
- `mcp-nixos` - NixOS-specific tools
- `gitea-mcp-server` - Git integration
- `emcee` - General MCP orchestration
Future versions could integrate these for:
- Better NixOS config manipulation
- Git-based config versioning
- More sophisticated tooling
Stay tuned!