psviderski

uncloud: Deploy Containers Across Docker Hosts with WireGuard

Uncloud is a Go-based container orchestrator built on Docker, WireGuard, Caddy, and Corrosion. It connects cloud VMs and bare-metal servers in a peer-to-peer cluster for Compose-based deployments without a Kubernetes control plane.

ActiveGoApache-2.0DockerSelf HostedDevOps
Stars
5.5k
Forks
183
Stars, last 16 days
+49
Last commit
1 day ago
Contributors
24

Our take

Activeregular commits and releases

Health score

47/100

How it is scored
Activity
68
Community
40
Issues
46
Pull requests
32

+49 stars in the last 16 days

  • Slower to merge pull requests than 94% of the projects we track

Uncloud is a promising, actively maintained option for Docker-based multi-host deployments, with a pre-1.0 maturity level and development concentrated heavily in one contributor.

Good fit if

  • You want to deploy Docker workloads across your own cloud VMs or bare-metal hosts without a Kubernetes control plane.
  • You value Compose compatibility, WireGuard networking, and built-in HTTPS ingress in a single tool.
  • You can work with a pre-1.0 Go project and accept that most development comes from one person, despite a broader contributor base.

Look elsewhere if

  • You need a stable 1.0 interface and want to avoid possible breaking changes between releases.
  • Your platform is not based on Docker hosts or you need Kubernetes or Helm-based deployment workflows.
  • Your team requires features the project describes as forthcoming, such as automatic rollback on deployment failure.
All health signals
Last commit2026-10-14 (1 day ago)
Commits, last 90 days83
Releases, last 12 months12 (latest nightly, 2026-10-14, pre-release)
Contributors24 (top contributor: 88% of commits)
Issues closed, last 90 days12 (typically closed in 82 days)
Pull requests merged, last 90 days10 (typically merged in 9 days)
Project age2 years

Checked on 2026-10-15 with the GitHub API.

Overview

Uncloud is a lightweight container orchestration and clustering tool built around Docker, with WireGuard for its private mesh, Caddy for HTTPS ingress, and Corrosion from Fly.io for synchronising cluster state. It brings cloud VMs and bare-metal Docker hosts together so teams can deploy and manage containerised apps across machines without maintaining a central control plane or taking on Kubernetes operations.

Its intended middle ground is self-hosted infrastructure with a cloud-like deployment workflow: use familiar Docker Compose definitions and CLI commands, then grow from one server to a multi-machine cluster. The project is actively developed, but remains pre-1.0.

Key Features

  • Connect Docker hosts across providers and locations using an automatically configured WireGuard mesh.
  • Deploy services using Docker Compose files or imperative CLI commands.
  • Distribute cluster state peer to peer through Corrosion, without a central control plane.
  • Route services across machines with built-in DNS discovery and load balancing.
  • Publish services through Caddy with automatic HTTPS certificate provisioning and renewal.
  • Build and transfer images directly to cluster machines through Unregistry, avoiding an external registry.
  • Run replicated services and perform rolling updates intended to avoid downtime.
  • Manage the cluster through SSH access to any machine, using the uc CLI.

Use Cases

  • A developer or small team wants to run web services on a few VPSs without operating Kubernetes.
  • A self-hosting team wants to combine cloud servers and on-premises hardware under one deployment workflow.
  • A Docker Compose user wants to move from one server to multiple machines while retaining familiar service definitions.
  • An operator wants HTTPS ingress and service discovery for container workloads without assembling those components separately.

What you need

Detected in the repository

  • Go 1.26.0 or newer (from go.mod)
  • A Dockerfile, so it can run in a container
  • A test suite and automated checks on GitHub Actions

License in plain words

Apache-2.0permissive

  • Commercial use: yes
  • Modify and redistribute: yes
  • You must keep: the license, the NOTICE file and a note of your changes
  • Share your changes: no
  • Includes an explicit patent grant from the contributors:

A summary, not legal advice: the LICENSE file is what applies.

Getting Started

Install the CLI on macOS or Linux, then initialise a server:

brew install psviderski/tap/uncloud
uc machine init root@your-server-ip

For other installation options and deployment details, see the README and documentation.

Considerations

  • The project is explicitly pre-1.0, so releases may introduce breaking changes. Its recent commit and release activity indicates ongoing development, but does not remove that maturity risk.
  • The project requires Go 1.26.0 for development and Docker on the machines it manages. The README does not list Compose or Helm as separate installation requirements, though Compose is a supported service-definition format.
  • Contributor activity is concentrated: most of the code comes from one person. The repository has other contributors, but teams should consider maintainer concentration when assessing long-term support.
  • The README says automatic rollback after a failed deployment is coming soon, rather than presenting it as an available feature.
  • Uncloud is licensed under Apache-2.0. Review the license terms when incorporating or distributing the project.

Found this useful?

Share it with someone who would like uncloud.

Comparisons