// the find
psviderski/uncloud
A lightweight tool for deploying and managing containerised applications across a network of Docker hosts. Bridging the gap between Docker and Kubernetes ✨
Uncloud is a Go-based CLI and daemon for running containerized apps across a mesh of Docker hosts — VPS, bare metal, whatever — without standing up Swarm or Kubernetes. It's aimed at developers who want production-grade networking, TLS, and multi-host deploys via plain Docker Compose files, but don't want to operate a control plane.
There's no control plane or quorum to babysit: cluster state syncs peer-to-peer via Corrosion (a CRDT-backed distributed SQLite from Fly.io), so any machine can still coordinate operations if others are down. It uses actual Docker Compose syntax instead of inventing a new YAML dialect, so the learning curve from docker-compose is close to zero. The Unregistry integration pushes only the missing image layers straight to target hosts, skipping an external registry entirely, which is a genuinely useful shortcut for small self-hosted setups. WireGuard mesh networking, per-container IPs, DNS-based service discovery, and automatic Let's Encrypt TLS via Caddy all come out of the box instead of being left as an exercise for the user.
It's explicitly pre-1.0 with breaking changes expected between releases, so pinning versions matters more than usual. Automatic rollback on a failed rolling deploy is listed as 'coming soon,' meaning a bad update currently requires manual intervention. The docs don't spell out what happens to a service's containers if the machine running them goes offline permanently — the cluster state survives, but there's no described automatic rescheduling, so you may need to redeploy by hand. And the imperative, no-reconciliation model that keeps the mental model simple also means there's no built-in drift correction if a container dies outside of a deploy — you're trading Kubernetes' self-healing for simplicity.