Files
chorus-services/installer/INSTALLER_DOCUMENTATION.md
tony 4ed167e734 Update branding assets and deployment configurations
- Enhanced moebius ring logo design in Blender
- Updated Docker Compose for website-only deployment with improved config
- Enhanced teaser layout with updated branding integration
- Added installation and setup documentation
- Consolidated planning and reports documentation
- Updated gitignore to exclude Next.js build artifacts and archives

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-27 07:45:08 +10:00

418 lines
12 KiB
Markdown

# CHORUS Enhanced Installer Documentation
## Overview
The CHORUS Enhanced Installer (`install-chorus-enhanced.sh`) provides a complete one-command installation solution for the CHORUS distributed AI orchestration platform, addressing the critical gap between binary installation and functional repository configuration.
## Key Features
### 🎯 Complete End-to-End Setup
- **Binary Installation**: Downloads and installs BZZZ P2P coordination agent
- **Repository Integration**: Full GITEA/GitHub configuration with credential management
- **Service Management**: SystemD service installation and configuration
- **Infrastructure Setup**: Ollama AI models and coordinator components
### 🔧 Repository Provider Support
- **GITEA Integration**: Auto-detection of local GITEA instances
- **GitHub Support**: Full GitHub API integration
- **Unified Configuration**: Single YAML config for both providers
- **Credential Management**: Secure token storage and validation
### 🚀 Installation Modes
- **Worker Node**: Standard agent installation
- **Coordinator Node**: Additional components (Docker, Age encryption, WHOOSH)
- **Custom Configuration**: Interactive setup with sensible defaults
## Installation Methods
### Quick Install (Recommended)
```bash
curl -fsSL https://chorus.services/install-enhanced.sh | sh
```
### With Options
```bash
curl -fsSL https://chorus.services/install-enhanced.sh | sh -s -- --coordinator --models "llama3.2,qwen2.5:7b"
```
### Advanced Configuration
```bash
curl -fsSL https://chorus.services/install-enhanced.sh | sh -s -- --gitea-url "https://git.mycompany.com" --github
```
## Command Line Options
| Option | Description | Default |
|--------|-------------|---------|
| `--coordinator` | Install as cluster coordinator | false |
| `--models MODEL` | Comma-separated AI models to install | none |
| `--skip-deps` | Skip dependency installation | false |
| `--quiet` | Minimal output mode | false |
| `--github` | Use GitHub instead of GITEA | gitea |
| `--gitea-url URL` | Custom GITEA instance URL | http://ironwood:3000 |
| `--help` | Show help information | - |
## Repository Configuration
### GITEA Setup (Default)
```yaml
repository:
provider: "gitea"
config:
base_url: "http://ironwood:3000"
owner: "tony"
repository: "bzzz"
task_label: "bzzz-task"
in_progress_label: "bzzz-working"
completed_label: "bzzz-completed"
priority_label: "bzzz-priority"
assignee: "tony"
base_branch: "main"
branch_prefix: "bzzz/task-"
token_file: "/home/user/chorus/business/secrets/gitea-token"
```
### GitHub Setup
```yaml
repository:
provider: "github"
config:
base_url: "https://api.github.com"
owner: "username"
repository: "project"
task_label: "bzzz-task"
token_file: "/home/user/chorus/business/secrets/gh-token"
```
## Installation Process
### Phase 1: System Detection
1. **OS Detection**: Linux (apt/yum/pacman) or macOS (brew)
2. **Architecture Detection**: amd64, arm64, armv7
3. **Dependency Check**: curl, git, jq installation
4. **GITEA Discovery**: Auto-detect local instances
### Phase 2: Credential Setup
1. **Token Management**: Secure storage in `~/chorus/business/secrets/`
2. **Repository Access**: Interactive token configuration
3. **Access Validation**: Test API connectivity
4. **Permission Verification**: Ensure required scopes
### Phase 3: Infrastructure Installation
1. **Ollama Setup**: AI model runtime installation
2. **Directory Structure**: CHORUS workspace creation
3. **Binary Download**: Architecture-specific BZZZ binary
4. **Service Files**: SystemD configuration generation
### Phase 4: BZZZ Configuration
1. **Node Configuration**: Interactive hostname, role, ports
2. **Repository Integration**: Complete YAML generation
3. **Agent Settings**: Capabilities and expertise configuration
4. **Security Setup**: Encryption and audit logging
### Phase 5: Service Installation
1. **SystemD Integration**: Service file installation
2. **Service Activation**: Enable and start BZZZ
3. **Health Verification**: Service status validation
4. **Coordinator Setup**: Additional components if needed
## Generated Configuration
### Complete BZZZ YAML Configuration
```yaml
# Node Identity
node:
id: "hostname"
role: "worker|coordinator"
# API Configuration
api:
host: "0.0.0.0"
port: 8080
# Health Monitoring
health:
port: 8081
enabled: true
# P2P Networking
p2p:
port: 4001
discovery:
enabled: true
bootstrap_nodes: []
service_tag: "bzzz-peer-discovery"
topics:
bzzz: "bzzz/coordination/v1"
hmmm: "hmmm/meta-discussion/v1"
# Agent Configuration
agent:
id: "hostname-agent"
capabilities: ["general", "reasoning", "task-coordination"]
poll_interval: "30s"
max_tasks: 3
specialization: "general_developer"
role: "Full Stack Engineer"
expertise: ["golang", "typescript", "docker", "kubernetes"]
# Repository Integration (CORE FEATURE)
repository:
provider: "gitea|github"
config:
base_url: "provider-url"
owner: "repository-owner"
repository: "repository-name"
task_label: "bzzz-task"
token_file: "path-to-token"
# Security Configuration
security:
admin_key_shares:
threshold: 3
total_shares: 5
election_config:
heartbeat_timeout: "5s"
discovery_timeout: "30s"
election_timeout: "15s"
minimum_quorum: 3
key_rotation_days: 90
audit_logging: true
# Storage and Logging
storage:
path: "$HOME/.chorus/data"
type: "filesystem"
logging:
level: "info"
format: "text"
output: "stdout"
file: "$HOME/.chorus/logs/bzzz.log"
```
## Service Management
### SystemD Service Configuration
```ini
[Unit]
Description=BZZZ P2P Task Coordination System
Documentation=https://chorus.services/docs/bzzz
After=network.target
Wants=network.target
[Service]
Type=simple
User=username
Group=username
WorkingDirectory=/path/to/bzzz
ExecStart=/path/to/bzzz --config /path/to/config/bzzz.yaml
Restart=always
RestartSec=10
# Security Settings
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=false
[Install]
WantedBy=multi-user.target
```
### Service Commands
```bash
# Service Management
sudo systemctl status bzzz # Check status
sudo systemctl restart bzzz # Restart service
sudo journalctl -u bzzz -f # Follow logs
# Health Monitoring
curl http://localhost:8081/health # Health check
curl http://localhost:8081/metrics # Metrics
curl http://localhost:8080 # API endpoint
```
## API Endpoints
### Health and Monitoring
- `GET /health` - Service health status
- `GET /metrics` - Prometheus metrics
- `GET /status` - Agent status and active tasks
### Task Coordination
- Task discovery handled automatically via repository polling
- Task claiming through repository provider APIs
- Progress updates via repository comments/labels
## Security Features
### Credential Management
- **Token Storage**: Secure file permissions (600)
- **API Validation**: Repository access verification
- **Encryption**: Age keys for coordinator nodes
- **Audit Logging**: Security event tracking
### Network Security
- **P2P Encryption**: libp2p secure channels
- **API Authentication**: Repository token validation
- **Local Binding**: Services bound to localhost by default
## Installation Verification
### Automatic Checks
1. **Service Status**: BZZZ systemd service active
2. **Configuration**: Valid YAML configuration file
3. **Repository Access**: API connectivity test
4. **Ollama Status**: AI runtime availability
### Manual Verification
```bash
# Check all services
systemctl status bzzz ollama
# Test API endpoints
curl http://localhost:8081/health
curl http://localhost:8080/status
# View configuration
cat ~/chorus/project-queues/active/BZZZ/config/bzzz.yaml
# Check logs
sudo journalctl -u bzzz --since "1 hour ago"
```
## Troubleshooting
### Common Issues
#### Service Not Starting
```bash
# Check logs
sudo journalctl -u bzzz -f
# Verify binary
~/chorus/project-queues/active/BZZZ/bzzz --version
# Check configuration
cat ~/chorus/project-queues/active/BZZZ/config/bzzz.yaml
```
#### Repository Access Issues
```bash
# Verify token file
ls -la ~/chorus/business/secrets/
# Test API access manually
curl -H "Authorization: token $(cat ~/chorus/business/secrets/gitea-token)" \
http://ironwood:3000/api/v1/user
```
#### Network Connectivity
```bash
# Check port availability
netstat -tlnp | grep :8080
netstat -tlnp | grep :8081
# Test P2P connectivity
netstat -tlnp | grep :4001
```
## Coordinator Features
### Additional Components
- **Docker**: Container runtime for WHOOSH dashboard
- **Age Encryption**: Cryptographic key management
- **WHOOSH Integration**: Web-based cluster management
- **Bootstrap Node**: P2P network discovery
### Setup Process
```bash
# Install as coordinator
curl -fsSL https://chorus.services/install-enhanced.sh | sh -s -- --coordinator
# Additional coordinator tasks
docker-compose up -d whoosh # Start dashboard
age-keygen -o secrets/key # Generate encryption keys
```
## Architecture Integration
### CHORUS Ecosystem
- **BZZZ**: P2P task coordination agent
- **WHOOSH**: Web-based cluster dashboard
- **Ollama**: Local AI model runtime
- **Repository Provider**: Task source (GITEA/GitHub)
### Data Flow
1. **Task Discovery**: Repository polling for labeled issues
2. **Task Claiming**: Atomic assignment via API
3. **Work Execution**: Local processing with progress updates
4. **Task Completion**: Results submission and issue closure
## Migration and Updates
### From Previous Versions
- Configuration migration handled automatically
- Service restart required for updates
- Backward compatibility with existing repositories
### Update Process
```bash
# Download new installer
curl -fsSL https://chorus.services/install-enhanced.sh > install.sh
# Run update (preserves configuration)
chmod +x install.sh && ./install.sh
```
## Performance and Scaling
### Resource Requirements
- **CPU**: 1-2 cores minimum
- **Memory**: 2GB RAM minimum
- **Storage**: 10GB for binaries, models, and logs
- **Network**: Stable internet for repository access
### Scaling Considerations
- **Worker Nodes**: Add with same installer
- **Load Balancing**: Automatic via P2P discovery
- **High Availability**: Multi-coordinator setup supported
## Integration Points
### Repository Providers
- **GITEA**: Self-hosted Git service
- **GitHub**: Cloud-based Git service
- **Custom**: Extensible provider architecture
### AI Models
- **Ollama Integration**: Local model runtime
- **Model Management**: Automatic pulling and updates
- **Custom Models**: Support for specialized models
### Monitoring
- **SystemD**: Native service monitoring
- **Health Endpoints**: HTTP health checks
- **Metrics**: Prometheus-compatible metrics
- **Logs**: Structured logging to journald
## Comparison with Basic Installer
### Enhanced Features (install-chorus-enhanced.sh)
**Repository Configuration**: Complete GITEA/GitHub setup
**Credential Management**: Secure token storage
**API Validation**: Repository access verification
**YAML Configuration**: Complete config generation
**Interactive Setup**: User-friendly configuration
**Auto-detection**: GITEA instance discovery
**Provider Switching**: GitHub/GITEA selection
### Basic Installer Limitations (install-chorus.sh)
**No Repository Setup**: Manual configuration required
**No Credentials**: Token management missing
**JSON Config**: Basic configuration only
**No Validation**: No API connectivity testing
**Manual Setup**: Requires post-install configuration
This enhanced installer completely addresses the critical gap identified during deployment, providing a truly seamless installation experience from download to functional task coordination.