[{"createdAt":"2026-07-06T05:50:25.585Z","updatedAt":"2026-07-07T15:25:10.120Z","title":"Live Telemetry, HA Elections, and Full Egress Control","hero":{"intro":"This release is all about visibility and control. The new Live Server Monitor streams a full telemetry snapshot from your host nodes every 10 seconds, giving you a top-like view of exactly what's happening on your infrastructure. High Availability Elections move quorum logic into the platform itself, making it dramatically simpler to build resilient multi-instance applications with a single acting primary. And on the networking side, custom routes, HA egress gateways with static IPs, and scoped internal API access give precise control over how traffic moves out of your containers, and what your workloads can reach."},"changes":[{"title":"Live Server Monitor","type":"added","description":"We've released a new telemetry API, and portal modal, built to make it easier to observe what's happening on a Cycle host node. This API utilizes a long-lived socket to publish a full telemetry snapshot every 10 seconds, giving a top-like interface for servers.","showcase":false,"codebase":"portal","id":"6a4b412fc9dd340121f9c1d7"},{"title":"High Availability Elections","type":"added","description":"We've added an election protocol to the platform. This helps teams create applications where they may want many running instances, but allow only one instance at a time to perform an action (a primary).  This feature helps offload the logic and quorum decisions around elections to the platform, making it easier to build highly-resilient and technical applications.","showcase":false,"codebase":"platform","id":"6a4b4148c9dd340121f9c1d8"},{"title":"Custom Network Routes","type":"added","description":"Using config.network.routes, you can now specify additional IP routes making it easier to send container-originated traffic over a VPN, tailscale, or other networks.","showcase":false,"codebase":"platform","id":"6a4b417bc9dd340121f9c1d9"},{"title":"Egress Gateways + Static IPs","type":"added","description":"With config.network.egress_via_gateway enabled, containers and virtual machines will now utilize an HA egress gateway for outbound traffic. This is helpful for situations where you might want a subset of nodes to have public egress connectivity, or your application requires static IPs for compatibility with third party vendors.","showcase":false,"codebase":"platform","id":"6a4b4198c9dd340121f9c1da"},{"title":"Internal API Access Scoping","type":"added","description":"By setting config.runtime.internal_api.scope, applications can be restricted to specific internal API endpoints, creating more secure runtime environments. By default, a container only has access to the self scope.","showcase":false,"codebase":"platform","id":"6a4b41c5c9dd340121f9c1db"},{"title":"Increased Reserve Memory for Compute","type":"changed","description":"As new features have been added, the compute service now requires more RAM than it used to. Under high loads, the current memory reservation can leave the compute service starved for memory and cause cascading instability. We've now increased the baseline memory reservation from 384MB to 512MB.","showcase":false,"codebase":"platform","id":"6a4b41e8c9dd340121f9c1dc"},{"title":"Flexible Console Kernel Arg","type":"changed","description":"For servers booted via Virtual Provider ISOs, the console argument can now be customized via the kernel arguments input. Previously, a custom Console argument would have been overwritten.","showcase":false,"codebase":"platform","id":"6a4b420ac9dd340121f9c1dd"},{"title":"LVM Volume Discard Flag","type":"improvement","description":"LVM-backed volumes are now mounted with the discard flag. Space freed inside a volume (e.g., deleted files) is automatically released back to the host's storage pool, rather than remaining allocated until cleaned up.","showcase":false,"codebase":"platform","id":"6a4be572c9dd340121f9c1de"}],"state":{},"events":{},"sendToMailingList":false,"sendToDevMailingList":false,"meta":{"sends":[{"list":"dev","sentAt":"2026-07-07T15:23:18.237Z","id":"6a4d19e63606be0001ce7433"},{"list":"production","sentAt":"2026-07-07T15:25:10.114Z","id":"6a4d1a563606be0001ce7434"}]},"_status":"published","version":"2026.07.06.3","id":"6a4b422179b3b5224c2691a5"},{"createdAt":"2026-06-15T21:06:12.027Z","updatedAt":"2026-06-15T21:06:12.027Z","title":"EU Control Plane Goes Live","hero":{"intro":"Cycle now runs on two fully isolated control planes (EU and NA) giving teams stronger data sovereignty, lower latency to region-local servers, and timezone-aware updates that land during off-peak hours. This release also makes restart and power-off events more reliable under heavy load by switching them to acknowledgements, and fixes VM hostname resolution so updated hostnames resolve correctly via discovery."},"changes":[{"title":"Restart/Power-Off Events","type":"improvement","description":"Instead of optimistic events, we've transitioned the events related to restarts and shutdowns to be acknowledgements. Now, instead of wondering whether a restart has begun, the event signifies the beginning of a restart. This is helpful for servers under heavy load.","notes":[],"showcase":false,"codebase":"platform","id":"6a306944fdf54a0e5d7d6949"},{"title":"European Control Plane","type":"added","description":"We now operate two fully isolated control planes for the Cycle platform: Europe, and North America. Beyond better control around data sovereignty, these control planes also deliver lower latency to region-centric servers. Additionally, having multiple control planes enables us to perform timezone-specific updates, delivering updates during off-peak hours.","notes":[],"showcase":false,"codebase":"platform","id":"6a306944fdf54a0e5d7d694a"},{"title":"VM Hostnames","type":"fixed","description":"Updating the hostname of a VM now correctly allows for the new hostname to be resolved via discovery.","notes":[],"showcase":false,"codebase":"platform","id":"6a306944fdf54a0e5d7d694b"}],"version":"2026.06.01.1","legacyId":"6a1dfb62afc456ca16e3c7e2","state":{"current":"published","changed":"2026-06-01T21:39:45.031Z"},"events":{"created":"2026-06-01T21:36:34.280Z","updated":"2026-06-01T21:39:06.966Z"},"_status":"published","id":"6a3069443b12c80c8ae4abe2","meta":{"sends":[]},"sendToMailingList":false,"sendToDevMailingList":false},{"createdAt":"2026-06-15T21:06:12.908Z","updatedAt":"2026-06-15T21:06:12.908Z","title":"Concurrency Controls, Faster Lifecycles, Better Visibility","hero":{"intro":"Container and instance tasks can now be sub-queued through the API, specific container actions can be routed outside the environment queue, and there's a new per-hub cap of 15 concurrent jobs. Container starts are faster on newer CycleOS, Ceph volume cleanup on stop is faster, and burstable CPU is fixed and on by default after being quietly broken. "},"changes":[{"title":"Concurrent Environment Tasks","type":"added","description":"A majority of the container/instance related tasks can now be sub-queued via the API. This sub-queue is not a default, and must be specified on a per-request basis but may be helpful for increasing concurrency for environments with thousands of containers.","notes":[],"showcase":false,"codebase":"platform","id":"6a306944fdf54a0e5d7d694c"},{"title":"Ethtool Added to Agent","type":"added","description":"The ethtool utility has been added to the agent service to assist with debugging NIC issues for those who may be running Cycle on highly customized bare-metal.","notes":[],"showcase":false,"codebase":"platform","id":"6a306944fdf54a0e5d7d694d"},{"title":"Burstable CPU","type":"fixed","description":"We discovered a bug in the container runtime which prevented burstable CPU from being enabled. This has been fixed, and enabled by default. Stateless containers are allowed to burst up to 0.25 CPU threads. Stateful instances can burst to 0.5 CPU threads.","notes":[],"showcase":false,"codebase":"platform","id":"6a306944fdf54a0e5d7d694e"},{"title":"Server CPU Graph","type":"fixed","description":"Our math for calculating a server's CPU usage in the portal omitted a metric resulting in a graph that had inflated CPU usage by ~5-12% above real usage.","notes":[],"showcase":false,"codebase":"portal","id":"6a306944fdf54a0e5d7d694f"},{"title":"Scoped Variable Cache Miss","type":"fixed","description":"We fixed a race condition which occasionally would lead to a missing scoped variable on the first start of a container on a new host.","notes":[],"showcase":false,"codebase":"platform","id":"6a306944fdf54a0e5d7d6950"},{"title":"Memory/RAM Usage Metrics","type":"improvement","description":"Cycle is now tracking 4 more metrics related to RAM usage, giving teams more visibility into how their applications run.","notes":[],"showcase":false,"codebase":"platform","id":"6a306944fdf54a0e5d7d6951"},{"title":"Faster Ceph Volume Cleanup on Stop","type":"improvement","description":"Ceph volume cleanup now runs more efficiently when a container stops, reducing teardown time and freeing storage resources more reliably for the next workload.","notes":[],"showcase":false,"codebase":"platform","id":"6a306944fdf54a0e5d7d6952"},{"title":"Per-Hub Job Concurrency Limit","type":"improvement","description":"Each hub now enforces a maximum of 15 concurrent jobs via a new semaphore map, preventing any single hub from saturating platform resources and keeping job execution predictable under heavy load.","notes":[],"showcase":false,"codebase":"platform","id":"6a306944fdf54a0e5d7d6953"}],"version":"2026.05.19.1","legacyId":"6a0b38deaeb8a571e1cc86ed","state":{"current":"published","changed":"2026-05-22T14:27:56.716Z"},"events":{"created":"2026-05-18T16:05:50.764Z","updated":"2026-05-22T14:27:52.104Z"},"_status":"published","id":"6a3069443b12c80c8ae4abec","meta":{"sends":[]},"sendToMailingList":false,"sendToDevMailingList":false}]