Uncloud is a lightweight container orchestration tool written in Go that enables developers to deploy and manage containerized applications across distributed networks of Docker hosts without the complexity of Kubernetes or Docker Swarm. The project positions itself as a pragmatic middle ground between simple cloud platforms like Heroku and heavyweight orchestrators, targeting developers who want to own their infrastructure while maintaining a cloud-like developer experience.
The core architecture eliminates the need for a central control plane by implementing a fully decentralized design where each machine maintains a synchronized copy of cluster state through peer-to-peer communication using a CRDT-based distributed SQLite database called corrosion. This approach keeps cluster operations functional even when some machines go offline, removing the operational burden of maintaining highly-available control planes. Communication between machines happens through an automatic WireGuard mesh network that handles peer discovery and NAT traversal, giving containers unique IPs for direct cross-machine communication without manual configuration.
Uncloud uses Docker Compose format for defining services and volumes, allowing developers to leverage familiar tooling rather than learning a new domain-specific language. The platform provides production-grade features including automatic service discovery through a built-in DNS server, persistent storage management across machines, zero-downtime rolling deployments, and managed HTTPS with automatic TLS certificate provisioning via Let's Encrypt through an integrated Caddy reverse proxy. It also integrates with Unregistry for building and pushing Docker images directly to machines without external registries, transferring only missing layers for efficiency.
The project maintains a Docker-like CLI interface for managing both infrastructure and applications, and supports remote management where users can control their entire infrastructure through SSH access to any single machine in the cluster. The platform can combine cloud VMs, dedicated servers, and bare metal into a unified computing environment regardless of location or provider, with automatic DNS records under the uncld.dev domain for services requiring public access.
The project is classified across multiple domains including Cloud Migration, Resource Portability, Multi-cloud, Local Development, Cloud Emulation, Infrastructure Management, DevOps Tooling, Environment Replication, Cloud Agnostic, and Data Synchronization. The design philosophy emphasizes imperative operations over declarative state reconciliation to simplify both the mental model and troubleshooting. Uncloud aims to make deployment feel seamless whether running on a five-dollar VPS, spare hardware, or dedicated servers, while minimizing system overhead to maximize resources available for applications.