# BZZZ: Distributed Semantic Context Publishing Platform

**Version 2.0 - Phase 2B Edition**

BZZZ is a production-ready, distributed platform for semantic context publishing with end-to-end encryption, role-based access control, and autonomous consensus mechanisms. It enables secure collaborative decision-making across distributed teams and AI agents.

## Key Features

- **🔐 End-to-End Encryption**: Age encryption with multi-recipient support
- **🏗️ Distributed Storage**: DHT-based storage with automatic replication
- **👥 Role-Based Access**: Hierarchical role system with inheritance
- **🗳️ Autonomous Consensus**: Automatic admin elections with Shamir secret sharing
- **🌐 P2P Networking**: Decentralized libp2p networking with peer discovery
- **📊 Real-Time Events**: WebSocket-based event streaming
- **🔧 Developer SDKs**: Complete SDKs for Go, Python, JavaScript, and Rust

## Architecture Overview

```
┌─────────────────────────────────────────────────────────────────┐
│                      BZZZ Platform                             │
├─────────────────────────────────────────────────────────────────┤
│  API Layer: HTTP/WebSocket/MCP                                 │
│  Service Layer: Decision Publisher, Elections, Config          │
│  Infrastructure: Age Crypto, DHT Storage, P2P Network          │
└─────────────────────────────────────────────────────────────────┘
```

## Components

- **`main.go`** - Application entry point and server initialization
- **`api/`** - HTTP API handlers and WebSocket event streaming
- **`pkg/config/`** - Configuration management and role definitions
- **`pkg/crypto/`** - Age encryption and Shamir secret sharing
- **`pkg/dht/`** - Distributed hash table storage with caching
- **`pkg/ucxl/`** - UCXL addressing and decision publishing
- **`pkg/election/`** - Admin consensus and election management
- **`examples/`** - SDK examples in multiple programming languages
- **`docs/`** - Comprehensive documentation suite

## Quick Start

### Prerequisites

- **Go 1.23+** for building from source
- **Linux/macOS/Windows** - cross-platform support
- **Port 8080** - HTTP API (configurable)
- **Port 4001** - P2P networking (configurable)

### Installation

```bash
# Clone the repository
git clone https://github.com/anthonyrawlins/bzzz.git
cd bzzz

# Build the binary
go build -o bzzz main.go

# Run with default configuration
./bzzz
```

### Configuration

Create a configuration file:

```yaml
# config.yaml
node:
  id: "your-node-id"
  
agent:
  id: "your-agent-id" 
  role: "backend_developer"
  
api:
  host: "localhost"
  port: 8080
  
p2p:
  port: 4001
  bootstrap_peers: []
```

### First Steps

1. **Start the node**: `./bzzz --config config.yaml`
2. **Check status**: `curl http://localhost:8080/api/agent/status`
3. **Publish a decision**: See [User Manual](docs/USER_MANUAL.md#publishing-decisions)
4. **Explore the API**: See [API Reference](docs/API_REFERENCE.md)

For detailed setup instructions, see the **[User Manual](docs/USER_MANUAL.md)**.

## Documentation

Complete documentation is available in the [`docs/`](docs/) directory:

### 📚 **Getting Started**
- **[User Manual](docs/USER_MANUAL.md)** - Complete user guide with examples
- **[API Reference](docs/API_REFERENCE.md)** - HTTP API documentation
- **[Configuration Reference](docs/CONFIG_REFERENCE.md)** - System configuration

### 🔧 **For Developers**  
- **[Developer Guide](docs/DEVELOPER.md)** - Development setup and contribution
- **[SDK Documentation](docs/BZZZv2B-SDK.md)** - Multi-language SDK guide
- **[SDK Examples](examples/sdk/README.md)** - Working examples in Go, Python, JavaScript, Rust

### 🏗️ **Architecture & Operations**
- **[Architecture Documentation](docs/ARCHITECTURE.md)** - System design with diagrams  
- **[Technical Report](docs/TECHNICAL_REPORT.md)** - Comprehensive technical analysis
- **[Security Documentation](docs/SECURITY.md)** - Security model and best practices
- **[Operations Guide](docs/OPERATIONS.md)** - Deployment and monitoring

**📖 [Complete Documentation Index](docs/README.md)**

## SDK & Integration

BZZZ provides comprehensive SDKs for multiple programming languages:

### Go SDK
```go
import "github.com/anthonyrawlins/bzzz/sdk/bzzz"

client, err := bzzz.NewClient(bzzz.Config{
    Endpoint: "http://localhost:8080",
    Role:     "backend_developer",
})
```

### Python SDK  
```python
from bzzz_sdk import BzzzClient

client = BzzzClient(
    endpoint="http://localhost:8080",
    role="backend_developer"
)
```

### JavaScript SDK
```javascript  
const { BzzzClient } = require('bzzz-sdk');

const client = new BzzzClient({
    endpoint: 'http://localhost:8080',
    role: 'frontend_developer'
});
```

### Rust SDK
```rust
use bzzz_sdk::{BzzzClient, Config};

let client = BzzzClient::new(Config {
    endpoint: "http://localhost:8080".to_string(),
    role: "backend_developer".to_string(),
    ..Default::default()
}).await?;
```

**See [SDK Examples](examples/sdk/README.md) for complete working examples.**

## Key Use Cases

### 🤖 **AI Agent Coordination**
- Multi-agent decision publishing and consensus
- Secure inter-agent communication with role-based access
- Autonomous coordination with admin elections

### 🏢 **Enterprise Collaboration**  
- Secure decision tracking across distributed teams
- Hierarchical access control for sensitive information
- Audit trails for compliance and governance

### 🔧 **Development Teams**
- Collaborative code review and architecture decisions  
- Integration with CI/CD pipelines and development workflows
- Real-time coordination across development teams

### 📊 **Research & Analysis**
- Secure sharing of research findings and methodologies
- Collaborative analysis with access controls
- Distributed data science workflows

## Security & Privacy

- **🔐 End-to-End Encryption**: All decision content encrypted with Age
- **🔑 Key Management**: Automatic key generation and rotation
- **👥 Access Control**: Role-based permissions with hierarchy
- **🛡️ Admin Security**: Shamir secret sharing for admin key recovery
- **📋 Audit Trail**: Complete audit logging for all operations
- **🚫 Zero Trust**: No central authority required for normal operations

## Performance & Scalability

- **⚡ Fast Operations**: Sub-500ms latency for 95% of operations
- **📈 Horizontal Scaling**: Linear scaling up to 1000+ nodes
- **🗄️ Efficient Storage**: DHT-based distributed storage with caching
- **🌐 Global Distribution**: P2P networking with cross-region support
- **📊 Real-time Updates**: WebSocket event streaming for live updates

## Contributing

We welcome contributions! Please see the **[Developer Guide](docs/DEVELOPER.md)** for:

- Development environment setup
- Code style and contribution guidelines  
- Testing procedures and requirements
- Documentation standards

### Quick Contributing Steps
1. **Fork** the repository
2. **Clone** your fork locally  
3. **Follow** the [Developer Guide](docs/DEVELOPER.md#development-environment)
4. **Create** a feature branch
5. **Test** your changes thoroughly
6. **Submit** a pull request

## License

This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.

## Support

- **📖 Documentation**: [docs/README.md](docs/README.md)
- **🐛 Issues**: [GitHub Issues](https://github.com/anthonyrawlins/bzzz/issues)
- **💬 Discussions**: [GitHub Discussions](https://github.com/anthonyrawlins/bzzz/discussions)
- **📧 Contact**: [maintainers@bzzz.dev](mailto:maintainers@bzzz.dev)

---

**BZZZ v2.0** - Distributed Semantic Context Publishing Platform with Age encryption and autonomous consensus.