warren

module
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Oct 14, 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 βœ…

Directories ΒΆ

Path Synopsis
api
cmd
warren command
warren-migrate command
pkg
api
Package api implements the Warren gRPC API server and Protocol Buffer conversions.
Package api implements the Warren gRPC API server and Protocol Buffer conversions.
client
Package client provides a Go client library for the Warren gRPC API.
Package client provides a Go client library for the Warren gRPC API.
deploy
Package deploy implements deployment strategies for Warren services.
Package deploy implements deployment strategies for Warren services.
dns
Package dns provides a service discovery DNS server for Warren clusters.
Package dns provides a service discovery DNS server for Warren clusters.
embedded
Package embedded provides containerd binary management for Warren across platforms.
Package embedded provides containerd binary management for Warren across platforms.
events
Package events provides an in-memory event broker for Warren's pub/sub messaging.
Package events provides an in-memory event broker for Warren's pub/sub messaging.
health
Package health provides health check mechanisms for monitoring container health in Warren clusters.
Package health provides health check mechanisms for monitoring container health in Warren clusters.
ingress
Package ingress provides HTTP/HTTPS reverse proxy and ingress controller for Warren clusters.
Package ingress provides HTTP/HTTPS reverse proxy and ingress controller for Warren clusters.
log
Package log provides structured logging for Warren using zerolog.
Package log provides structured logging for Warren using zerolog.
manager
Package manager implements the Warren cluster manager node with Raft consensus.
Package manager implements the Warren cluster manager node with Raft consensus.
metrics
Package metrics provides Prometheus metrics collection and exposition for Warren.
Package metrics provides Prometheus metrics collection and exposition for Warren.
network
Package network provides host port publishing for Warren services using iptables.
Package network provides host port publishing for Warren services using iptables.
reconciler
Package reconciler provides failure detection and automatic healing for Warren clusters.
Package reconciler provides failure detection and automatic healing for Warren clusters.
runtime
Package runtime provides containerd integration for Warren's container lifecycle management.
Package runtime provides containerd integration for Warren's container lifecycle management.
scheduler
Package scheduler provides container scheduling and orchestration for Warren clusters.
Package scheduler provides container scheduling and orchestration for Warren clusters.
security
Package security provides cryptographic services for Warren clusters.
Package security provides cryptographic services for Warren clusters.
storage
Package storage provides BoltDB-backed state persistence for Warren's cluster data.
Package storage provides BoltDB-backed state persistence for Warren's cluster data.
types
Package types defines the core data structures used throughout Warren.
Package types defines the core data structures used throughout Warren.
volume
Package volume provides volume orchestration and lifecycle management for Warren clusters.
Package volume provides volume orchestration and lifecycle management for Warren clusters.
worker
Package worker implements the Warren worker node that executes containerized tasks.
Package worker implements the Warren worker node that executes containerized tasks.

Jump to

Keyboard shortcuts

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