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.
276 lines
6.4 KiB
Markdown
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!
|