 ee6bb09511
			
		
	
	ee6bb09511
	
	
	
		
			
			🎉 MAJOR MILESTONE: Complete BZZZ Phase 2B documentation and core implementation ## Documentation Suite (7,000+ lines) - ✅ User Manual: Comprehensive guide with practical examples - ✅ API Reference: Complete REST API documentation - ✅ SDK Documentation: Multi-language SDK guide (Go, Python, JS, Rust) - ✅ Developer Guide: Development setup and contribution procedures - ✅ Architecture Documentation: Detailed system design with ASCII diagrams - ✅ Technical Report: Performance analysis and benchmarks - ✅ Security Documentation: Comprehensive security model - ✅ Operations Guide: Production deployment and monitoring - ✅ Documentation Index: Cross-referenced navigation system ## SDK Examples & Integration - 🔧 Go SDK: Simple client, event streaming, crypto operations - 🐍 Python SDK: Async client with comprehensive examples - 📜 JavaScript SDK: Collaborative agent implementation - 🦀 Rust SDK: High-performance monitoring system - 📖 Multi-language README with setup instructions ## Core Implementation - 🔐 Age encryption implementation (pkg/crypto/age_crypto.go) - 🗂️ Shamir secret sharing (pkg/crypto/shamir.go) - 💾 DHT encrypted storage (pkg/dht/encrypted_storage.go) - 📤 UCXL decision publisher (pkg/ucxl/decision_publisher.go) - 🔄 Updated main.go with Phase 2B integration ## Project Organization - 📂 Moved legacy docs to old-docs/ directory - 🎯 Comprehensive README.md update with modern structure - 🔗 Full cross-reference system between all documentation - 📊 Production-ready deployment procedures ## Quality Assurance - ✅ All documentation cross-referenced and validated - ✅ Working code examples in multiple languages - ✅ Production deployment procedures tested - ✅ Security best practices implemented - ✅ Performance benchmarks documented Ready for production deployment and community adoption. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			554 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			554 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # BZZZ User Manual
 | |
| 
 | |
| **Version 2.0 - Phase 2B Edition**  
 | |
| Complete guide for using BZZZ's unified semantic context publishing platform.
 | |
| 
 | |
| ## Table of Contents
 | |
| 
 | |
| 1. [Introduction](#introduction)
 | |
| 2. [Getting Started](#getting-started)
 | |
| 3. [Role-Based Operations](#role-based-operations)
 | |
| 4. [Content Publishing](#content-publishing)
 | |
| 5. [Security & Encryption](#security--encryption)
 | |
| 6. [Admin Operations](#admin-operations)
 | |
| 7. [Troubleshooting](#troubleshooting)
 | |
| 8. [Best Practices](#best-practices)
 | |
| 
 | |
| ## Introduction
 | |
| 
 | |
| BZZZ Phase 2B is a distributed semantic context publishing platform that enables AI agents to securely share decisions and coordinate across a cluster. The system uses role-based encryption to ensure only authorized agents can access specific content.
 | |
| 
 | |
| ### What's New in Phase 2B
 | |
| - **Unified Architecture**: SLURP is now integrated as an admin-role BZZZ agent
 | |
| - **Age Encryption**: All content encrypted with modern cryptography
 | |
| - **DHT Storage**: Distributed storage across cluster nodes
 | |
| - **Consensus Elections**: Automatic admin role failover
 | |
| - **Decision Publishing**: Automated task completion tracking
 | |
| 
 | |
| ### Key Concepts
 | |
| 
 | |
| **Roles**: Define agent capabilities and access permissions
 | |
| - `admin`: Master authority, can decrypt all content (SLURP functions)
 | |
| - `senior_software_architect`: Decision-making authority  
 | |
| - `backend_developer`: Implementation and suggestions
 | |
| - `observer`: Read-only monitoring
 | |
| 
 | |
| **UCXL Addresses**: Semantic addresses for content organization
 | |
| ```
 | |
| agent/role/project/task/node
 | |
| backend_developer/backend_developer/bzzz/implement_encryption/1704672000
 | |
| ```
 | |
| 
 | |
| **Authority Levels**: Hierarchical access control
 | |
| - `master`: Can decrypt all roles (admin only)
 | |
| - `decision`: Can decrypt decision-level and below
 | |
| - `suggestion`: Can decrypt suggestions and coordination
 | |
| - `read_only`: Can only decrypt observer content
 | |
| 
 | |
| ## Getting Started
 | |
| 
 | |
| ### Prerequisites
 | |
| - Go 1.23+ for compilation
 | |
| - Docker (optional, for containerized deployment)
 | |
| - Network connectivity between cluster nodes
 | |
| - Age encryption keys for your role
 | |
| 
 | |
| ### Installation
 | |
| 
 | |
| 1. **Clone and Build**:
 | |
| ```bash
 | |
| git clone https://github.com/anthonyrawlins/bzzz.git
 | |
| cd bzzz
 | |
| go build -o bzzz main.go
 | |
| ```
 | |
| 
 | |
| 2. **Configure Your Agent**:
 | |
| Create `.ucxl/roles.yaml`:
 | |
| ```yaml
 | |
| backend_developer:
 | |
|   authority_level: suggestion
 | |
|   can_decrypt: [backend_developer]
 | |
|   model: ollama/codegemma
 | |
|   age_keys:
 | |
|     public_key: "age1..." # Your public key
 | |
|     private_key: "AGE-SECRET-KEY-1..." # Your private key
 | |
| ```
 | |
| 
 | |
| 3. **Enable DHT and Encryption**:
 | |
| Create `config.yaml`:
 | |
| ```yaml
 | |
| agent:
 | |
|   id: "dev-agent-01"
 | |
|   role: "backend_developer"
 | |
|   specialization: "code_generation"
 | |
| 
 | |
| v2:
 | |
|   dht:
 | |
|     enabled: true
 | |
|     bootstrap_peers:
 | |
|       - "/ip4/192.168.1.100/tcp/4001/p2p/QmBootstrapPeer"
 | |
| 
 | |
| security:
 | |
|   admin_key_shares:
 | |
|     threshold: 3
 | |
|     total_shares: 5
 | |
| ```
 | |
| 
 | |
| 4. **Start Your Agent**:
 | |
| ```bash
 | |
| ./bzzz
 | |
| ```
 | |
| 
 | |
| ### First Run Verification
 | |
| 
 | |
| When BZZZ starts successfully, you'll see:
 | |
| ```
 | |
| 🚀 Starting Bzzz + HMMM P2P Task Coordination System...
 | |
| 🐝 Bzzz node started successfully
 | |
| 📍 Node ID: QmYourNodeID
 | |
| 🤖 Agent ID: dev-agent-01
 | |
| 🎭 Role: backend_developer (Authority: suggestion)
 | |
| 🕸️ DHT initialized
 | |
| 🔐 Encrypted DHT storage initialized
 | |
| 📤 Decision publisher initialized
 | |
| ✅ Age encryption test passed
 | |
| ✅ Shamir secret sharing test passed
 | |
| 🎉 End-to-end encrypted decision flow test completed successfully!
 | |
| ```
 | |
| 
 | |
| ## Role-Based Operations
 | |
| 
 | |
| ### Understanding Your Role
 | |
| 
 | |
| Each agent operates with a specific role that determines:
 | |
| - **What content you can access** (based on authority level)
 | |
| - **Which AI models you use** (optimized for role type)
 | |
| - **Your decision-making scope** (what you can decide on)
 | |
| - **Your encryption permissions** (who can decrypt your content)
 | |
| 
 | |
| ### Role Hierarchy
 | |
| 
 | |
| ```
 | |
| admin (master) 
 | |
| ├─ Can decrypt: ALL content
 | |
| ├─ Functions: SLURP, cluster admin, elections
 | |
| └─ Authority: Master
 | |
| 
 | |
| senior_software_architect (decision)
 | |
| ├─ Can decrypt: architect, developer, observer
 | |
| ├─ Functions: Strategic decisions, architecture
 | |
| └─ Authority: Decision
 | |
| 
 | |
| backend_developer (suggestion)  
 | |
| ├─ Can decrypt: backend_developer
 | |
| ├─ Functions: Code implementation, suggestions
 | |
| └─ Authority: Suggestion
 | |
| 
 | |
| observer (read_only)
 | |
| ├─ Can decrypt: observer
 | |
| ├─ Functions: Monitoring, reporting
 | |
| └─ Authority: ReadOnly
 | |
| ```
 | |
| 
 | |
| ### Checking Your Permissions
 | |
| 
 | |
| View your current role and permissions:
 | |
| ```bash
 | |
| curl http://localhost:8080/api/agent/status
 | |
| ```
 | |
| 
 | |
| Response:
 | |
| ```json
 | |
| {
 | |
|   "node_id": "QmYourNode",
 | |
|   "role": "backend_developer", 
 | |
|   "authority_level": "suggestion",
 | |
|   "can_decrypt": ["backend_developer"],
 | |
|   "is_admin": false
 | |
| }
 | |
| ```
 | |
| 
 | |
| ## Content Publishing
 | |
| 
 | |
| BZZZ automatically publishes decisions when you complete tasks. There are several types of content you can publish:
 | |
| 
 | |
| ### Automatic Task Completion
 | |
| 
 | |
| When your agent completes a task, it automatically publishes a decision:
 | |
| 
 | |
| ```go
 | |
| // In your task completion code
 | |
| taskTracker.CompleteTaskWithDecision(
 | |
|     "implement_user_auth",           // Task ID
 | |
|     true,                           // Success
 | |
|     "Implemented JWT authentication", // Summary
 | |
|     []string{"auth.go", "middleware.go"} // Files modified
 | |
| )
 | |
| ```
 | |
| 
 | |
| This creates an encrypted decision stored in the DHT that other authorized roles can access.
 | |
| 
 | |
| ### Manual Decision Publishing
 | |
| 
 | |
| You can also manually publish different types of decisions:
 | |
| 
 | |
| #### Architectural Decisions
 | |
| ```bash
 | |
| curl -X POST http://localhost:8080/api/decisions/architectural \
 | |
|   -H "Content-Type: application/json" \
 | |
|   -d '{
 | |
|     "task": "migrate_to_microservices",
 | |
|     "decision": "Split monolith into 5 microservices",
 | |
|     "rationale": "Improve scalability and maintainability", 
 | |
|     "alternatives": ["Keep monolith", "Partial split"],
 | |
|     "implications": ["Increased complexity", "Better scalability"],
 | |
|     "next_steps": ["Design service boundaries", "Plan migration"]
 | |
|   }'
 | |
| ```
 | |
| 
 | |
| #### Code Decisions
 | |
| ```bash
 | |
| curl -X POST http://localhost:8080/api/decisions/code \
 | |
|   -H "Content-Type: application/json" \
 | |
|   -d '{
 | |
|     "task": "optimize_database_queries",
 | |
|     "decision": "Added Redis caching layer",
 | |
|     "files_modified": ["db.go", "cache.go"],
 | |
|     "lines_changed": 150,
 | |
|     "test_results": {
 | |
|       "passed": 25,
 | |
|       "failed": 0,
 | |
|       "coverage": 85.5
 | |
|     },
 | |
|     "dependencies": ["github.com/go-redis/redis"]
 | |
|   }'
 | |
| ```
 | |
| 
 | |
| #### System Status
 | |
| ```bash
 | |
| curl -X POST http://localhost:8080/api/decisions/status \
 | |
|   -H "Content-Type: application/json" \
 | |
|   -d '{
 | |
|     "status": "All systems operational",
 | |
|     "metrics": {
 | |
|       "uptime_hours": 72,
 | |
|       "active_peers": 4,
 | |
|       "decisions_published": 15
 | |
|     },
 | |
|     "health_checks": {
 | |
|       "database": true,
 | |
|       "redis": true,
 | |
|       "api": true
 | |
|     }
 | |
|   }'
 | |
| ```
 | |
| 
 | |
| ### Querying Published Content
 | |
| 
 | |
| Find recent decisions by your role:
 | |
| ```bash
 | |
| curl "http://localhost:8080/api/decisions/query?role=backend_developer&limit=10"
 | |
| ```
 | |
| 
 | |
| Search by project and timeframe:
 | |
| ```bash
 | |
| curl "http://localhost:8080/api/decisions/search?project=user_auth&since=2025-01-01"
 | |
| ```
 | |
| 
 | |
| ### Content Encryption
 | |
| 
 | |
| All published content is automatically:
 | |
| 1. **Encrypted with Age** using your role's public key
 | |
| 2. **Stored in DHT** across multiple cluster nodes
 | |
| 3. **Cached locally** for 10 minutes for performance
 | |
| 4. **Announced to peers** for content discovery
 | |
| 
 | |
| ## Security & Encryption
 | |
| 
 | |
| ### Understanding Encryption
 | |
| 
 | |
| BZZZ uses Age encryption with role-based access control:
 | |
| 
 | |
| - **Your content** is encrypted with your role's keys
 | |
| - **Higher authority roles** can decrypt your content
 | |
| - **Lower authority roles** cannot access your content
 | |
| - **Admin roles** can decrypt all content in the system
 | |
| 
 | |
| ### Key Management
 | |
| 
 | |
| #### Viewing Your Keys
 | |
| ```bash
 | |
| # Check your role configuration
 | |
| cat .ucxl/roles.yaml
 | |
| 
 | |
| # Verify key format
 | |
| curl http://localhost:8080/api/crypto/validate-keys
 | |
| ```
 | |
| 
 | |
| #### Generating New Keys
 | |
| ```bash
 | |
| # Generate new Age key pair
 | |
| curl -X POST http://localhost:8080/api/crypto/generate-keys
 | |
| 
 | |
| # Response includes both keys
 | |
| {
 | |
|   "public_key": "age1abcdef...", 
 | |
|   "private_key": "AGE-SECRET-KEY-1..."
 | |
| }
 | |
| ```
 | |
| 
 | |
| **⚠️ Security Warning**: Store private keys securely and never share them.
 | |
| 
 | |
| #### Key Rotation
 | |
| Update your role's keys in `.ucxl/roles.yaml` and restart:
 | |
| ```yaml
 | |
| backend_developer:
 | |
|   age_keys:
 | |
|     public_key: "age1newkey..."
 | |
|     private_key: "AGE-SECRET-KEY-1newkey..."
 | |
| ```
 | |
| 
 | |
| ### Access Control Examples
 | |
| 
 | |
| Content encrypted by `backend_developer` can be decrypted by:
 | |
| - ✅ `backend_developer` (creator)
 | |
| - ✅ `senior_software_architect` (higher authority)
 | |
| - ✅ `admin` (master authority)
 | |
| - ❌ `observer` (lower authority)
 | |
| 
 | |
| Content encrypted by `admin` can only be decrypted by:
 | |
| - ✅ `admin` roles only
 | |
| 
 | |
| ### Verifying Security
 | |
| 
 | |
| Test encryption functionality:
 | |
| ```bash
 | |
| # Test Age encryption
 | |
| curl http://localhost:8080/api/crypto/test-age
 | |
| 
 | |
| # Test Shamir secret sharing
 | |
| curl http://localhost:8080/api/crypto/test-shamir
 | |
| 
 | |
| # Verify end-to-end decision flow
 | |
| curl http://localhost:8080/api/crypto/test-e2e
 | |
| ```
 | |
| 
 | |
| ## Admin Operations
 | |
| 
 | |
| ### Becoming Admin
 | |
| 
 | |
| BZZZ uses consensus elections to select admin nodes. An agent becomes admin when:
 | |
| 
 | |
| 1. **No current admin** exists (initial startup)
 | |
| 2. **Admin heartbeat times out** (admin node failure)
 | |
| 3. **Split brain detection** (network partition recovery)
 | |
| 4. **Quorum loss** (too few nodes online)
 | |
| 
 | |
| ### Admin Responsibilities
 | |
| 
 | |
| When your node becomes admin, it automatically:
 | |
| - **Enables SLURP functionality** (context curation)
 | |
| - **Starts admin heartbeats** to maintain leadership
 | |
| - **Gains master authority** (can decrypt all content)
 | |
| - **Coordinates elections** for other nodes
 | |
| 
 | |
| ### Admin Commands
 | |
| 
 | |
| #### View Election Status
 | |
| ```bash
 | |
| curl http://localhost:8080/api/admin/election-status
 | |
| ```
 | |
| 
 | |
| Response:
 | |
| ```json
 | |
| {
 | |
|   "current_admin": "QmAdminNode",
 | |
|   "is_admin": false,
 | |
|   "election_active": false,
 | |
|   "candidates": [],
 | |
|   "last_heartbeat": "2025-01-08T15:30:00Z"
 | |
| }
 | |
| ```
 | |
| 
 | |
| #### Force Election (Admin Only)
 | |
| ```bash
 | |
| curl -X POST http://localhost:8080/api/admin/trigger-election \
 | |
|   -H "Authorization: Admin QmYourNodeID"
 | |
| ```
 | |
| 
 | |
| #### View Admin Key Shares
 | |
| ```bash
 | |
| curl http://localhost:8080/api/admin/key-shares \
 | |
|   -H "Authorization: Admin QmAdminNodeID"
 | |
| ```
 | |
| 
 | |
| ### Shamir Secret Sharing
 | |
| 
 | |
| Admin keys are distributed using Shamir secret sharing:
 | |
| - **5 total shares** distributed across cluster nodes
 | |
| - **3 shares required** to reconstruct admin key
 | |
| - **Automatic reconstruction** during elections
 | |
| - **Secure storage** of individual shares
 | |
| 
 | |
| #### Share Management
 | |
| Each non-admin node stores one share:
 | |
| ```bash
 | |
| # View your share (if you have one)
 | |
| curl http://localhost:8080/api/admin/my-share
 | |
| 
 | |
| # Validate share integrity  
 | |
| curl http://localhost:8080/api/admin/validate-share
 | |
| ```
 | |
| 
 | |
| ## Troubleshooting
 | |
| 
 | |
| ### Common Issues
 | |
| 
 | |
| #### "DHT not connected"
 | |
| ```
 | |
| ⚠️ Failed to create DHT: connection refused
 | |
| ```
 | |
| 
 | |
| **Solution**: Check bootstrap peers in configuration:
 | |
| ```yaml
 | |
| v2:
 | |
|   dht:
 | |
|     bootstrap_peers:
 | |
|       - "/ip4/192.168.1.100/tcp/4001/p2p/QmValidPeer"
 | |
| ```
 | |
| 
 | |
| #### "Age encryption failed"
 | |
| ```
 | |
| ❌ Age encryption test failed: invalid key format
 | |
| ```
 | |
| 
 | |
| **Solution**: Verify Age keys in `.ucxl/roles.yaml`:
 | |
| - Private key starts with `AGE-SECRET-KEY-1`
 | |
| - Public key starts with `age1`
 | |
| 
 | |
| #### "No admin available"
 | |
| ```
 | |
| ⚠️ No admin found, triggering election
 | |
| ```
 | |
| 
 | |
| **Solution**: Wait for election to complete or manually trigger:
 | |
| ```bash
 | |
| curl -X POST http://localhost:8080/api/admin/trigger-election
 | |
| ```
 | |
| 
 | |
| #### "Permission denied to decrypt"
 | |
| ```
 | |
| ❌ Current role cannot decrypt content from role: admin
 | |
| ```
 | |
| 
 | |
| **Solution**: This is expected - lower authority roles cannot decrypt higher authority content.
 | |
| 
 | |
| ### Debug Commands
 | |
| 
 | |
| #### View Node Status
 | |
| ```bash
 | |
| curl http://localhost:8080/api/debug/status | jq .
 | |
| ```
 | |
| 
 | |
| #### Check DHT Metrics
 | |
| ```bash
 | |
| curl http://localhost:8080/api/debug/dht-metrics | jq .
 | |
| ```
 | |
| 
 | |
| #### List Recent Decisions
 | |
| ```bash
 | |
| curl "http://localhost:8080/api/debug/recent-decisions?limit=5" | jq .
 | |
| ```
 | |
| 
 | |
| #### Test Connectivity
 | |
| ```bash
 | |
| curl http://localhost:8080/api/debug/test-connectivity | jq .
 | |
| ```
 | |
| 
 | |
| ### Log Analysis
 | |
| 
 | |
| BZZZ provides detailed logging for troubleshooting:
 | |
| 
 | |
| ```bash
 | |
| # View startup logs
 | |
| tail -f /var/log/bzzz/startup.log
 | |
| 
 | |
| # View decision publishing
 | |
| tail -f /var/log/bzzz/decisions.log  
 | |
| 
 | |
| # View election activity
 | |
| tail -f /var/log/bzzz/elections.log
 | |
| 
 | |
| # View DHT operations
 | |
| tail -f /var/log/bzzz/dht.log
 | |
| ```
 | |
| 
 | |
| Key log patterns to watch for:
 | |
| - `✅ Age encryption test passed` - Crypto working
 | |
| - `🕸️ DHT initialized` - DHT ready
 | |
| - `👑 Admin changed` - Election completed
 | |
| - `📤 Published task completion decision` - Publishing working
 | |
| 
 | |
| ## Best Practices
 | |
| 
 | |
| ### Security Best Practices
 | |
| 
 | |
| 1. **Secure Key Storage**:
 | |
|    - Store private keys in encrypted files
 | |
|    - Use environment variables in production
 | |
|    - Never commit keys to version control
 | |
| 
 | |
| 2. **Regular Key Rotation**:
 | |
|    - Rotate keys quarterly or after security incidents
 | |
|    - Coordinate rotation across cluster nodes
 | |
|    - Test key rotation in development first
 | |
| 
 | |
| 3. **Access Control**:
 | |
|    - Use principle of least privilege for roles
 | |
|    - Regularly audit role assignments
 | |
|    - Monitor unauthorized decryption attempts
 | |
| 
 | |
| ### Performance Best Practices
 | |
| 
 | |
| 1. **DHT Optimization**:
 | |
|    - Use multiple bootstrap peers for reliability
 | |
|    - Monitor DHT connection health
 | |
|    - Configure appropriate cache timeouts
 | |
| 
 | |
| 2. **Decision Publishing**:
 | |
|    - Batch similar decisions when possible
 | |
|    - Use appropriate content types for better organization
 | |
|    - Clean up old decisions periodically
 | |
| 
 | |
| 3. **Resource Management**:
 | |
|    - Monitor memory usage for large clusters
 | |
|    - Configure appropriate timeouts
 | |
|    - Use resource limits in production
 | |
| 
 | |
| ### Operational Best Practices
 | |
| 
 | |
| 1. **Monitoring**:
 | |
|    - Monitor admin election frequency
 | |
|    - Track decision publishing rates
 | |
|    - Alert on encryption failures
 | |
| 
 | |
| 2. **Backup & Recovery**:
 | |
|    - Backup role configurations
 | |
|    - Test admin key reconstruction
 | |
|    - Plan for cluster rebuild scenarios
 | |
| 
 | |
| 3. **Cluster Management**:
 | |
|    - Maintain odd number of nodes (3, 5, 7)
 | |
|    - Distribute nodes across network zones
 | |
|    - Plan for rolling updates
 | |
| 
 | |
| ---
 | |
| 
 | |
| ## Support & Documentation
 | |
| 
 | |
| - **API Reference**: [API_REFERENCE.md](API_REFERENCE.md)
 | |
| - **Developer Guide**: [DEVELOPER.md](DEVELOPER.md)  
 | |
| - **Security Model**: [SECURITY.md](SECURITY.md)
 | |
| - **Troubleshooting**: [TROUBLESHOOTING.md](TROUBLESHOOTING.md)
 | |
| 
 | |
| **BZZZ User Manual v2.0** - Complete guide for Phase 2B unified architecture with Age encryption and DHT storage. |