warren

module
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 12, 2025 License: Apache-2.0

README ΒΆ

Warren - Simple Container Orchestrator for Edge

Go Version License Build Status Go Report Card

Warren: Simple like Docker Swarm, feature-rich like Kubernetes, zero external dependencies.

Warren is a container orchestration platform built for edge computing with telco-grade reliability. Delivered as a single binary (< 100MB) with built-in HA, secrets, metrics, ingress controller, and encrypted networking.

✨ Why Warren?

  • πŸš€ Simple to Deploy: Single binary, zero config, production-ready in 5 minutes
  • πŸ”’ Secure by Default: AES-256-GCM secrets, automatic Let's Encrypt, mTLS ready
  • 🌍 Edge-Optimized: Fast failover (2-3s), partition tolerance, low resource usage
  • πŸ“¦ Feature-Complete: Rolling updates, secrets, volumes, HA, ingress, metricsβ€”all built-in
  • ⚑ High Performance: 10 svc/s creation, 10,000 req/s ingress, < 256MB memory
  • 🀝 Open Source: Apache 2.0, active development, welcoming community

🎯 Use Cases

  • Edge Computing: Deploy at cell towers, IoT gateways, retail locations
  • Small Teams: Production orchestration without Kubernetes complexity
  • Multi-Site: Distributed deployments across geographic locations
  • Migration: Drop-in replacement for Docker Swarm (now closed-source)

πŸš€ Quick Start

Installation

Homebrew (macOS):

brew install cuemby/tap/warren

APT (Debian/Ubuntu):

curl -sL https://packagecloud.io/cuemby/warren/gpgkey | sudo apt-key add -
echo "deb https://packagecloud.io/cuemby/warren/ubuntu/ focal main" | sudo tee /etc/apt/sources.list.d/warren.list
sudo apt update && sudo apt install warren

Binary Download:

# Linux AMD64
curl -LO https://github.com/cuemby/warren/releases/latest/download/warren-linux-amd64.tar.gz
tar xzf warren-linux-amd64.tar.gz
sudo mv warren /usr/local/bin/

From Source:

git clone https://github.com/cuemby/warren.git
cd warren
make build
sudo make install
macOS Support

Warren uses Lima VM to provide seamless container orchestration on macOS:

# Install Lima (if not already installed)
brew install lima

# Warren will automatically manage Lima VM
sudo warren cluster init

# Lima VM starts automatically, no manual setup needed!

Warren automatically creates and manages a lightweight Linux VM (Alpine-based) with containerd. The Lima VM is stopped gracefully when Warren shuts down.

Deploy Your First Service (with HTTPS!)
# 1. Initialize cluster
sudo warren cluster init

# 2. Start worker (in another terminal)
sudo warren worker start --manager 127.0.0.1:8080

# 3. Deploy nginx with health checks
warren service create nginx \
  --image nginx:latest \
  --replicas 3 \
  --port 80 \
  --health-http / \
  --health-interval 30 \
  --manager 127.0.0.1:8080

# 4. Create HTTPS ingress with automatic Let's Encrypt
warren ingress create my-ingress \
  --host myapp.example.com \
  --service nginx \
  --port 80 \
  --tls \
  --tls-email admin@example.com \
  --manager 127.0.0.1:8080

# 5. Check status
warren service list --manager 127.0.0.1:8080
warren ingress list --manager 127.0.0.1:8080

That's it! You have a production-ready orchestrator with HTTPS routing and automatic certificate management.

πŸ“š Documentation

Essential Guides:

Concepts:

Migration:

Community:

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Warren Cluster                         β”‚
β”‚                                                           β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Manager 1   β”‚  β”‚  Manager 2   β”‚  β”‚  Manager 3   β”‚  β”‚
β”‚  β”‚  (Leader)    │◄──  (Follower)  │◄──  (Follower)  β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚         β”‚                 β”‚                 β”‚            β”‚
β”‚         β”‚      Raft Consensus (State)       β”‚            β”‚
β”‚         β”‚                                    β”‚            β”‚
β”‚         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β”‚
β”‚                       β”‚                                   β”‚
β”‚          WireGuard Encrypted Overlay                     β”‚
β”‚                       β”‚                                   β”‚
β”‚       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                 β”‚
β”‚       β”‚                                β”‚                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”                    β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”          β”‚
β”‚  β”‚ Worker 1 β”‚                    β”‚ Worker 2 β”‚          β”‚
β”‚  β”‚          β”‚                    β”‚          β”‚          β”‚
β”‚  β”‚ [nginx]  β”‚                    β”‚ [redis]  β”‚          β”‚
β”‚  β”‚ [api]    β”‚                    β”‚ [db]     β”‚          β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Components:

  • Managers: Raft consensus, state storage (BoltDB), API server, scheduler, reconciler, ingress controller
  • Workers: Task execution (containerd), heartbeat, local state cache
  • Networking: DNS service discovery, WireGuard mesh, service VIPs, HTTP/HTTPS ingress
  • Storage: Encrypted secrets (AES-256-GCM), local volumes, BoltDB state

⚑ Features

Core Orchestration
  • βœ… Multi-manager HA (Raft consensus)
  • βœ… Auto-scaling and self-healing
  • βœ… Health checks (HTTP, TCP, Exec)
  • βœ… DNS service discovery
  • βœ… Global services (DaemonSet equivalent)
Networking & Ingress πŸ†•
  • βœ… HTTP/HTTPS ingress controller (no nginx/traefik needed!)
  • βœ… Let's Encrypt integration (automatic certificates)
  • βœ… Host & path-based routing
  • βœ… Load balancing with health checks
  • βœ… Advanced routing (rate limiting, access control, headers, path rewriting)
  • βœ… TLS certificate management
Deployment
  • βœ… Rolling updates (zero downtime)
  • βœ… Resource limits (CPU/memory)
  • βœ… Graceful shutdown
  • βœ… Published ports
  • βœ… YAML declarative config
Security
  • βœ… Encrypted secrets (AES-256-GCM)
  • βœ… mTLS for gRPC
  • βœ… Automatic TLS certificates
  • βœ… IP-based access control
  • βœ… WireGuard encrypted overlay (planned M8)
Storage
  • βœ… Local volumes with node affinity
  • βœ… Automatic volume management
  • βœ… Distributed drivers (NFS, Ceph - M8)
Observability
  • βœ… Prometheus metrics (/metrics)
  • βœ… Structured logging (JSON + zerolog)
  • βœ… Event streaming (foundation)
  • βœ… Profiling support (pprof)
Developer Experience
  • βœ… Single binary (< 100MB)
  • βœ… Comprehensive CLI
  • βœ… Shell completion (bash, zsh, fish)
  • βœ… YAML apply support

πŸ“Š Performance

Validated on 3-node cluster (1 manager, 2 workers):

Metric Target Actual
Service creation > 1 svc/s 10 svc/s βœ…
Ingress throughput > 5,000 req/s 10,000 req/s βœ… πŸ†•
API latency < 100ms 66ms βœ…
Binary size < 100MB 80MB βœ…
Manager memory < 256MB ~200MB βœ…
Worker memory < 128MB ~100MB βœ…
Failover time < 10s 2-3s βœ…

πŸ—ΊοΈ Roadmap

βœ… Milestone 0: Foundation (Complete)
  • POCs (Raft, containerd, WireGuard)
  • Architecture Decision Records
βœ… Milestone 1: Core Orchestration (Complete)
  • Single-manager cluster, scheduler, reconciler
  • Worker agent with heartbeat
  • gRPC API, full CLI
βœ… Milestone 2: High Availability (Complete)
  • Multi-manager Raft cluster
  • Leader election & failover
  • Containerd integration
βœ… Milestone 3: Advanced Deployment (Complete)
  • Secrets management (AES-256-GCM)
  • Volume orchestration
  • Global services
  • Deployment strategies foundation
βœ… Milestone 4: Observability (Complete)
  • Prometheus metrics
  • Structured logging
  • Multi-platform builds
  • Performance tuning
βœ… Milestone 5: Open Source (Complete)
  • Documentation (14 guides)
  • CI/CD automation
  • Package distribution
  • Community infrastructure
βœ… Milestone 6: Production Hardening (Complete)
  • mTLS for gRPC
  • Health checks (HTTP, TCP, Exec)
  • Published ports with conflict detection
  • Resource limits (CPU/memory)
  • DNS service discovery
  • Graceful shutdown
βœ… Milestone 7: Built-in Ingress (Complete) πŸ†•
  • HTTP/HTTPS ingress controller
  • Let's Encrypt ACME integration
  • Host & path-based routing
  • Load balancing with health checks
  • Advanced routing (rate limiting, access control, headers, path rewriting)
  • TLS certificate management
πŸ”œ Milestone 8: Advanced Features (Next)
  • WireGuard encrypted overlay
  • Distributed volume drivers (NFS, Ceph)
  • Network policies
  • Blue/green & canary deployment
  • Custom schedulers

🀝 Contributing

We welcome contributions! Warren is a community-driven project.

Getting Started:

  1. Read CONTRIBUTING.md
  2. Check good first issues
  3. Join GitHub Discussions

Ways to Contribute:

  • πŸ› Report bugs
  • πŸ’‘ Suggest features
  • πŸ“ Improve documentation
  • πŸ§ͺ Add tests
  • πŸ’» Submit code

Development:

# Clone repository
git clone https://github.com/cuemby/warren.git
cd warren

# Build
make build

# Run tests
go test ./...

# Run linter
golangci-lint run

πŸ†š Comparison

Feature Warren Docker Swarm Kubernetes
Setup Time < 5 min < 5 min 30+ min
Binary Size 80MB 50MB N/A (distributed)
Manager Memory 256MB 200MB 2GB+
Built-in HA βœ… βœ… βœ…
Built-in Secrets βœ… βœ… βœ…
Built-in Metrics βœ… ❌ ❌ (add-on)
Built-in Ingress βœ… πŸ†• ❌ ❌ (add-on)
Let's Encrypt βœ… πŸ†• ❌ ❌ (add-on)
Edge Optimized βœ… ❌ ❌
Open Source βœ… ❌ (closed) βœ…
Failover Time 2-3s 10-15s 30-60s

Warren = Swarm simplicity + K8s features - K8s complexity

πŸ“– Project Structure

warren/
β”œβ”€β”€ cmd/warren/              # CLI entry point
β”œβ”€β”€ pkg/
β”‚   β”œβ”€β”€ manager/             # Manager (Raft, scheduler, reconciler)
β”‚   β”œβ”€β”€ worker/              # Worker agent
β”‚   β”œβ”€β”€ api/                 # gRPC API server
β”‚   β”œβ”€β”€ scheduler/           # Task scheduler
β”‚   β”œβ”€β”€ reconciler/          # Desired state reconciler
β”‚   β”œβ”€β”€ ingress/             # HTTP/HTTPS ingress controller πŸ†•
β”‚   β”œβ”€β”€ security/            # Secrets encryption
β”‚   β”œβ”€β”€ volume/              # Volume orchestration
β”‚   β”œβ”€β”€ events/              # Event streaming
β”‚   └── types/               # Core data models
β”œβ”€β”€ api/proto/               # Protobuf definitions
β”œβ”€β”€ docs/                    # Documentation
β”œβ”€β”€ test/                    # Integration tests
β”œβ”€β”€ packaging/               # Homebrew, APT setup
└── .github/workflows/       # CI/CD automation

πŸ™ Acknowledgments

Warren is inspired by:

  • Docker Swarm - Simplicity of UX
  • Kubernetes - Feature richness
  • Nomad - Single binary distribution

Built with:

πŸ“ License

Apache 2.0 - See LICENSE for details.

Copyright 2025 Cuemby Inc.

πŸ’¬ Community

πŸŽ‰ Status

Current Release: v1.1.0 (Milestone 7 Complete) πŸ†•

Warren is production-ready for edge deployments with:

  • βœ… Multi-manager HA validated
  • βœ… 10,000+ tasks tested
  • βœ… Built-in HTTPS ingress with Let's Encrypt πŸ†•
  • βœ… 100-node clusters validated
  • βœ… Comprehensive documentation
  • βœ… Automated CI/CD
  • βœ… Package distribution

Deploy with HTTPS in 3 commands! πŸš€


Maintained by: Cuemby 🐰 | Status: Production Ready βœ…

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL