Download Latest Version uncloud_linux_amd64.tar.gz (33.9 MB)
Email in envelope

Get an email when there's a new version of Uncloud

Home / v0.17.0
Name Modified Size InfoDownloads / Week
Parent folder
checksums.txt 2026-03-01 560 Bytes
uncloud_linux_amd64.tar.gz 2026-03-01 33.3 MB
uncloud_linux_arm64.tar.gz 2026-03-01 30.2 MB
uncloud_macos_amd64.tar.gz 2026-03-01 33.3 MB
uncloud_macos_arm64.tar.gz 2026-03-01 30.9 MB
uncloudd_linux_amd64.tar.gz 2026-03-01 19.9 MB
uncloudd_linux_arm64.tar.gz 2026-03-01 18.1 MB
README.md 2026-03-01 8.5 kB
v0.17.0 source code.tar.gz 2026-03-01 2.7 MB
v0.17.0 source code.zip 2026-03-01 2.9 MB
Totals: 10 Items   171.5 MB 2

This release brings container health monitoring with automatic rollback during rolling deployments, Compose spec support for healthcheck, devices, and ulimits, and various reliability improvements.

✨ Highlights

Container health monitoring and rollback

Changes: 7a9eac5, 7b88040, ce3cb8a

Rolling deployments now monitor crashes and health checks after starting new containers. If a container keeps restarting or becomes unhealthy, the deployment automatically rolls it back and fails to prevent downtime.

https://github.com/user-attachments/assets/4ee73048-9ca2-4c8a-b075-f8c6a0840ee7

Compose healthcheck support

Compose files now support the healthcheck attribute, allowing you to define health checks for your services:

:::yaml
services:
  app:
    image: myapp
    healthcheck:
      test: curl -f http://localhost:8000/health
      interval: 5s
      retries: 3
      start_period: 10s
      start_interval: 1s

Use uc deploy --skip-health flag to bypass health monitoring for faster emergency deployments.

See Rolling deployments for more details on how rolling deployments work and how to configure health checks for your services.

Control container replacement order during rolling deployments

PR: #248. Thanks to @nick-potts for the contribution ❤️

You can now control the order of container replacement during rolling deployments with deploy.update_config.order in your Compose file:

  • start-first (default): starts a new container before stopping the old one
  • stop-first: stops the old container before starting a new one (brief downtime)

    :::yaml services: app: image: myapp deploy: update_config: order: stop-first

The default order automatically switches to stop-first if a service mounts a volume to prevent data corruption.

See Rolling deployments for more details.

Compose devices support

PR: #250. Thanks to @jabr for the contribution ❤️

You can now map host devices into containers, for example, Intel integrated GPU for video transcoding using the devices attribute in your Compose file:

:::yaml
services:
  app:
    image: myapp
    devices:

      - /dev/dri:/dev/dri
      - /dev/ttyUSB0:/dev/ttyUSB0:rw

Compose ulimits support

PR: #244. Thanks to @ipaddicting for the contribution ❤️

You can now set ulimits for service containers in your Compose file. For example, to increase the maximum number of open files:

:::yaml
services:
  app:
    image: myapp
    ulimits:
      nofile:
        soft: 65536
        hard: 65536

Auto-provision volumes for global services

PR: #243. Thanks to @zasdaym for the contribution ❤️

When deploying a global service with a volume, the volume is now automatically created on all machines in the cluster.

Improvements

  • SSH connections with ssh+cli:// prefix (use ssh CLI instead of Go native SSH implementation) reuse a single SSH connection via control socket - significantly speeds up uc commands
  • Improved uc image push support on macOS by always running proxy to virtualised Docker (except OrbStack that doesn't require it)
  • Global service deployment stops all running conflicting containers, e.g. left from interrupted deploys, not just the first one
  • Temporary socat proxy containers created by uc image push are labeled with uncloud.managed

Bug fixes

  • Fixed IPv6 address formatting for HTTP URLs (#254)
  • Fixed uc image push when using Rancher Desktop locally (#251)
  • Fixed uc machine init to reset an already initialised machine when using ssh+cli:// connection

Upgrade to 0.17.0

Uncloud CLI locally

To upgrade the Uncloud CLI (uc) locally:

:::bash
# Homebrew (macOS, Linux)
brew upgrade uncloud

# Install script (macOS, Linux)
curl -fsS https://get.uncloud.run/install.sh | sh

Machine daemon

To upgrade the Uncloud daemon on your machines, run the following commands on each machine:

:::bash
# AMD64
curl -fsSL -o uncloudd.tar.gz https://github.com/psviderski/uncloud/releases/download/v0.17.0/uncloudd_linux_amd64.tar.gz
# ARM64
# curl -fsSL -o uncloudd.tar.gz https://github.com/psviderski/uncloud/releases/download/v0.17.0/uncloudd_linux_arm64.tar.gz
tar -xf uncloudd.tar.gz
sudo install uncloudd /usr/local/bin/uncloudd
rm uncloudd uncloudd.tar.gz
sudo systemctl restart uncloud

Changelog

  • [b48ebe] chore: UNCLOUD_HEALTH_MONITOR_PERIOD accepts duration (10s, 500ms, 0)
  • [f8d194] chore: add TODO for ReplaceContainerOperation
  • [fe56d6] chore: always run proxy to virtualised Docker on macOS for 'image push' except OrbStack
  • [f48dc2] chore: fix landing navbar github/discord buttons wrap on mobile
  • [44013d] chore: format AGENTS, instruct to not use em dashes
  • [6e5965] chore: global reconciliation: stop all running conflicting containers, not only replace the first one
  • [a5a9ef] chore: init container healthcheck const
  • [87e49d] chore: label temporary socat proxy containers created by 'uc image push' with uncloud.managed
  • [215f21] chore: lint and fix e2e deploy tests with ReplaceContainerOperation
  • [c91a96] chore: make ssh+cli connections reuse one SSH connection via control socket. Fix image push
  • [185cf1] chore: minor full-spec test change
  • [1d4dbd] chore: minor sshcli refactgor
  • [5c54e9] chore: refactor device mapping to be compliant with Compose (CDI requests)
  • [93d7f2] chore: remove TODO about encapsulating Client in deploy operations
  • [808bda] chore: remove unused constants
  • [258827] chore: rename AI.md to AGENTS.md
  • [e67055] chore: rename env var UNCLOUD_DEFAULT_HEALTH_MONITOR_PERIOD_MS -> UNCLOUD_HEALTH_MONITOR_PERIOD_MS
  • [7c4f73] chore: specify machines to deploy website to
  • [18ebd2] chore: split deploy operations into separate files in operation package
  • [e0a63a] chore: typo
  • [4443fa] chore: update full-spec test to include latest implemented Compose attributes
  • [0b2e1b] chore: update newsletter form to substack
  • [53bf44] deploy.update_config.order support to start-first or stop-first when replacing containers (#248)
  • [ab6f85] feat: Add support for compose devices mappings (#250)
  • [ce3cb8] feat: add --skip-health flag to bypass health monitoring during container deployment
  • [17c1bb] feat: add WaitContainerHealthy client method and health check utilities
  • [3056e2] feat: add support for healthcheck in Compose
  • [3bd940] feat: add support for ulimits in compose and container creation (#221) (#244)
  • [15d9ce] feat: auto-provision volumes on all machines for global services (#243)
  • [7a9eac] feat: implement container health monitoring and rollback during rolling deployment (closes [#24])
  • [14056c] fix: format IPv6 addr correclty for HTTP URL (#254)
  • [7bfaf3] fix: image tag template formatting in docs
  • [294096] fix: recreate container on ulimit changes, add test
  • [476a2d] fix: reset already initialised machine on 'uc machine init' when using ssh+cli connection
  • [7b8804] fix: rolling container replacement: if new container fails, rollback and run old container only if it was running
  • [ce46a6] fix: ssh args for machine init/add when using ssh+cli
  • [a4a8e7] fix: sshcli tests
  • [d3ee73] fix: support image push when using Rancher Desktop locally (#251)
Source: README.md, updated 2026-03-01