Self-Hosted Changelog
Information on the latest updates and additions to the Self-Hosted Akuity Platform.
Versions
v0.32.0
Features
Instance Lifecycle & Safety
- Instance Termination Protection: A new "Instance Protection" setting on Argo CD and Kargo instances prevents accidental deletion. Protection must be explicitly disabled before an instance can be removed, with in-UI documentation explaining the workflow.
- Custom CA Bundle Support for Agents: Argo CD cluster agents and Kargo agents can now be configured with a custom certificate authority bundle, so agents in environments fronted by a corporate TLS-inspecting proxy or private CA no longer require manual manifest edits.
Kargo
- Kargo v1.11 Support: Full support for Kargo v1.11, including the restructured v1.11 Helm charts. Kargo v1.10 has also been updated through v1.10.9.
- Freight History: Kargo Enterprise instances now track freight lifecycle events (
FreightCreated,FreightPromoted,FreightApproved,FreightVerified) and expose them through a new paginated freight-history API and UI, so you can trace where a piece of freight has been and what happened to it. - Promotion Breakdown & DORA Metrics: New paginated APIs return promotion statistics grouped by project (or project and stage) with succeeded/failed/total counts, plus the most common promotion failure reasons. The Kargo dashboard has been reworked around these to give a clearer DORA metrics view.
- Declarative Kargo ClusterConfig: Kargo
ClusterConfigcan now be managed declaratively alongside the rest of your Kargo instance configuration. - Argo CD in Kargo Across Multiple Stages: Applications reachable from more than one Kargo stage are now authorized correctly, instead of only resolving against a single stage.
Self-Hosted Agent Installation
- Kargo Agent Helm Chart: The
akuity-agentchart can now install Kargo agents in addition to Argo CD cluster agents via a newagentTypevalue (argocdorkargo), with a dedicatedkargo.*value block covering agent namespace, self-hosted vs. Akuity-managed mode, associated Argo CD instance, custom image registries, and extra kustomizations. Argo CD-specific options move underargocd.*(see Breaking Changes).
Observability
- OpenTelemetry Tracing: Platform components now support OTLP trace export. Every component exposes
OTEL_SDK_DISABLED(default"true", so nothing is exported until you opt in) andOTEL_SERVICE_NAMEchart values; point the standardOTEL_TRACES_EXPORTER/OTEL_EXPORTER_OTLP_*variables at your own collector to control sampling and destination. This feature is currently experimental. - Per-Component Debug Logging: A new
debugchart value (defaultfalse) on the portal server, platform/notification/addon controllers, and the event/log cleaner jobs enables debug logging without hand-editing deployment args. - Kargo Stage Count in Telemetry: Self-hosted telemetry now reports total Kargo stages in use, so usage is visible alongside the licensed limit.
Portal & UI
- Organization Technical Contacts: A new Contacts page under organization settings lets owners maintain a list of up to five technical contacts (individual emails or distribution lists) for critical platform communications such as CVE notices and major upgrade announcements. Members get a read-only view.
- Platform Version Display: Self-hosted deployments now surface the running Akuity Platform version in the UI, and hovering the Akuity logo shows the platform version.
- Webhook URL in Portal Configuration: The portal configuration page now shows the webhook URL directly, removing the need to construct it by hand.
- ApplicationSet Navigation: When the ApplicationSet extension is enabled, the native Argo CD ApplicationSet navigation item is hidden to avoid two competing entry points.
- Repo Server Storage: The Argo CD repo server temporary directory size limit has been raised from 5Gi to 10Gi to accommodate larger repositories.
Akuity Intelligence
- Audit Logging for AKI Actions: When Akuity Intelligence remediates an issue by patching or deleting a Kubernetes resource directly, it now writes an audit log entry attributed to AKI. These appear on the Event Timeline as "Akuity Intelligence patched/deleted
<kind>/<name>", closing the gap where a human-initiated sync was recorded but an automated fix was not.
Version Updates
- Argo CD: Updated through v3.4.5, with new patch releases across the v3.2, v3.3, and v3.4 lines and refreshed Akuity builds (
-ak.92). - Argo CD Image Updater: Updated to v1.2.2.
- Kargo: Kargo v1.11.0 (with
-ak.0build) added; v1.10 line updated through v1.10.9.
Bug Fixes
Self-Hosted Deployment
- Portal Server Startup Crash: Fixed the portal server crashing on startup when the database host ends in
.svc.cluster.local. The dev safeguard tried to read the bundledpostgresDeployment, which the portal server's RBAC (secrets and configmaps only) forbids.SKIP_SAFEGUARDis now set on the portal server, matching the platform and addon controllers. - Restricted Pod Security Admission: All platform workloads previously hardcoded
runAsGroup: 0, which Gatekeeper/Kyverno policies and restricted Pod Security Admission reject. Non-OpenShift clusters now run withrunAsGroup: 1000, matchingrunAsUser(see Breaking Changes for OpenShift behavior).
Scale & Reliability
- Platform Memory Usage: Reworked various concurrency and memory management in the platform after an investigation into repeated
OOMKilledandResourceExhaustedevents. The Argo CD and Kargoexport instancenow use server-streaming RPCs that emit one resource per message. - Agent Reverse Proxy — Watch Stream Gaps and wedging: Fixed the root cause of controllers indefinitely believing deleted resources still exist and requests running indefinitely. Deletions are now delivered correctly and gaps are surfaced instead of hidden. Requests now carry proxy-enforced deadlines (watches get their declared
timeoutSecondsplus a 30s grace), and the proxy's own Application/Secret informers bound their list/watch calls.
Kargo
- Instance Deletion Failure: Deleting a Kargo instance failed with a foreign key constraint violation and permanently wedged the reconcile, because freight rows were not removed before the instance record. Freight history and freight are now deleted within the existing deletion transaction.
- Freight History Ordering: Freight history events sharing the same timestamp returned in arbitrary order. Results are now tiebroken by event lifecycle rank and then ID for stable, logical ordering in both ascending and descending queries.
- Promotion Logs: Fixed retrieval of stored Kargo promotion logs by querying the correct job name.
Security
- Akuity Intelligence Permission Enforcement: Several Akuity Intelligence dashboard endpoints built their resource service without the permission enforcer, so RBAC-restricted users received data for clusters outside their Argo CD RBAC destinations. The enforcer is now applied to the deprecated-APIs dashboard and CSV exports, resource types, container and resource CSV exports, timeline events, and image detail endpoints.
- Open Redirect on Error Page: The
/auth/errorpage used an attacker-controllablelogoutUrlquery parameter as a navigation target. The parameter is no longer read at all; the "Sign in with a different account" button always redirects to the fixed logout endpoint. - Dex CVE: Bumped Dex to v2.45.1 to address a reported vulnerability.
UI
- Cluster Agent Size: Fixed a crash when switching between custom and preset agent sizes while creating a cluster.
- Resource Detail Navigation: Navigating to a resource with no rendered detail view now defaults to the manifest tab instead of an empty panel.
- Unauthenticated KubeVision Access: Visiting a KubeVision URL while unauthenticated now redirects to login instead of failing.
- Page Header Layout: Fixed content positioning when the page header height changes dynamically.
- Email Templates: The unsubscribe link now only renders when an organization context is present.
Breaking Changes
⚠️ Argo CD 2.10, 2.11, and 2.12 Removed: These versions are no longer supported or available. The minimum supported Argo CD version is now 2.13. If you are running an instance on 2.10–2.12, upgrade it before applying this release — you will not be able to create new instances on these versions, and existing instances will be restricted to upgrade operations only.
⚠️ akuity-agent Chart Values Restructured: Argo CD-specific options have moved under an argocd.* block to make room for Kargo agent support: argoprojCustomImageRegistry, project, disableAutoUpgrade, stateReplication, redisTunneling, and namespaceScoped. The top-level keys are deprecated but still honored for backward compatibility and will be removed in a future release. If a value is set in both places, the argocd.* value wins (for booleans, either being true enables the flag). Also note that name is now interpreted per agentType — the cluster name for argocd, the agent name for kargo.
⚠️ Pod runAsGroup Changed on Non-OpenShift Clusters: Platform workloads now run with runAsGroup: 1000 instead of 0. OpenShift clusters retain GID 0 (required by OpenShift's arbitrary-UID SCC) when compatibility.openshift=true. If you have policies, volume permissions, or supplemental group assumptions that depend on GID 0, review them before upgrading.
v0.31.2
This patch release contains a new default agent image (0.5.95) containing a fix for a crash.
v0.31.1
Bugfix release containing new patch fix versions of Kargo
v0.31.0
Features
Akuity Intelligence (AKI) Enhancements
- MCP Server Support: AKI now integrates with Model Context Protocol (MCP) servers. Operators can configure MCP servers via a marketplace and creation UI, and the AI agent will automatically discover and use their tools during incident investigations. Context-aware scoping ensures tools are only offered when relevant to the active ArgoCD/Kargo instance or cluster. Admin-enforced parameter mappings allow operators to pin tool arguments (e.g., namespace) based on conversation context.
- AI Conversation Planner: AKI conversations and scheduled tasks now run on a plan-and-execute layer that makes AI workflows more deterministic. Plans are persisted, progress is visible in the UI, and the agent can replan in response to failures.
- Expose ArgoCD Tools for Instance and Cluster Scopes: ArgoCD application listing and instance-inspection tools are now available when AKI conversations are scoped to an instance or cluster, enabling deeper investigation without leaving the AI interface.
- Typed-Prefix Spotlight Search: AKI spotlight search now supports a
type: namequery syntax to narrow results to a specific resource type, with filtering handled server-side. - GitHub App Credentials for Kargo Promotion Advisor: The Kargo promotion advisor can now authenticate to GitHub using GitHub App credentials, in addition to existing credential types.
- Scheduled Task Audit Log: Changes to AKI scheduled tasks (create, update, delete) are now recorded in the audit log with before/after detail.
- Repo Credential Template Support: AKI can now use repository credential templates when investigating issues that involve repository access.
ArgoCD Additions
- Argo CD 3.4 Support: Akuity Platform now supports deploying and managing Argo CD version 3.4.x instances.
- Image Updater v1.2+ Support: Added support for the CRD-based Argo CD Image Updater (v1.2+), which uses
ImageUpdatercustom resources rather than application annotations. The platform now supports both legacy (v0.x) and modern (v1.2+) variants. - In-Cluster Repo Server & Credentials: Repositories belonging to in-cluster applications can now be served by the in-cluster repo server, and applications can use repository credentials stored in the local cluster. This keeps repository traffic and credentials within the workload cluster where appropriate.
Kargo Additions
- Kargo v1.10.7: Support for the latest Kargo patch release.
- Native Heartbeat Support: Platform controller permissions have been updated to support Kargo's native controller heartbeat feature introduced in recent Kargo versions, enabling more reliable controller health tracking.
- Agent Service Account Isolation for Promotion Pods: A new configuration option allows operators to restrict Kargo agent service accounts from being used inside promotion pods, improving security isolation between the agent and user workloads.
Platform & Operational
- Self-Hosted Telemetry for Faster Support: A new opt-out telemetry feature periodically gathers operational data from self-hosted installations — license claims, ArgoCD/Kargo usage counts and versions, component images, and steady-state health checks (cluster capacity, PostgreSQL version, DNS resolution, and registry credential validity). This data lets the Akuity support team diagnose and resolve issues far more quickly, since the relevant troubleshooting context is already available when you reach out. It runs as a weekly background job and can be disabled at any time.
- Automatic Agent Version Update Warning: The UI now displays a warning when a connected cluster's agent version is out of date, prompting operators to upgrade.
- In-Place Autoscaler Resizing: On Kubernetes 1.34+, the Argo CD application-controller autoscaler now resizes pod resources in place rather than triggering a rolling restart, reducing disruption when scaling resources up or down. Autoscaling has also been made more stable by suppressing scale-down during a cooldown period after a scale-up.
Chart Additions
imagePullSecretsis now optional in the Helm chart. SetimagePullSecrets.enabled: falseto skip the pull secret entirely (e.g., when using IRSA or a separately managed pull secret).
Bug Fixes
- Self-Hosted Password Policies: Fixed a bug where database passwords could not contain special characters, which blocked self-hosted installations with strict password requirements. Password generation now uses the full character set, and new options allow operators to configure password complexity requirements.
- Kargo Webhooks with IP Allowlists: Fixed an issue where configuring an IP allowlist on a Kargo instance also blocked the
/webhookpath, breaking webhook-based triggers from providers like GitHub. The webhook endpoint is now served on a dedicated route that remains reachable. - Webhook Host Validation: Webhook target hosts are now validated before requests are sent, hardening the platform against requests to unintended destinations.
- Force Logout on Password Reset: Resetting a user's password now revokes existing sessions so the user is logged out everywhere, rather than remaining signed in with stale credentials.
- Notifications Controller with App-in-Any-Namespace: Fixed the notifications controller so it watches all control-plane namespaces when "apps in any namespace" is enabled.
- Agent Disconnect Events: Fixed agent staleness handling so a disconnect event reliably fires when an agent transitions to stale, keeping connection status accurate.
- Connection Spike Handling: Improved handling of request bursts against instance databases by allowing the pgbouncer connection pool to expand when requests are waiting too long for a connection, reducing memory pressure and queueing under load.
- k3s Stability: Resolved a CPU spike in the chisel tunnel server and fixed k3s informers returning HTTP 410 errors by sending periodic bookmark events.
- Cluster-Scoped Resources Incorrectly Namespace-Filtered: Fixed a bug where cluster-scoped Kubernetes resources were being filtered by namespace in resource tree queries, causing them to appear missing.
- ARGOCD_NAMESPACE Propagation to Kargo Promotion Controller: Fixed missing environment variable propagation that could cause the Kargo promotion controller to use the wrong namespace when ArgoCD is deployed in a non-default namespace.
- Kargo Control Plane Default Resource Requests: Recalibrated default CPU and memory requests for Kargo control plane components to better reflect observed usage.
- PodDisruptionBudgets for Kargo: Added PodDisruptionBudgets to Kargo components and added a replica count check before creating ArgoCD PDBs to avoid misconfiguration.
Chart Fixes
- Dex Tolerations and ServiceAccount Annotations: Fixed
sso.dex.tolerationsandsso.dex.serviceAccount.annotationsHelm values, which were documented but previously had no effect. - Traefik LoadBalancerClass: Fixed
traefik.service.loadBalancerClass, which was read from the wrong path and had no effect. The value now correctly controls the Traefik Service'sloadBalancerClass.
v0.30.1
v0.30.0
Features
Kargo v1.10 General Availability
- Kargo v1.10: Full support for Kargo v1.10.0, v1.10.1, and v1.10.3. The GA release includes updated CRDs, the dedicated promotion executor image, and enterprise feature support
- Additional Kargo Patch Releases: Added Kargo v1.9.6 and v1.9.7
- Kargo Autoscaler: Kargo controller instances now support autoscaling — resources are automatically scaled up or down based on observed workload demand
Argo CD Updates
- New Versions: Added support for Argo CD v3.3.4 through v3.3.9 and patch releases across the v2.13 and v2.14 series
- This also includes patch release 3.2.11 for addressing an Argo CVE
Akuity Intelligence (AKI) Enhancements
####### GitLab Integration
- GitLab Support: AKI now supports GitLab in addition to GitHub. Users can create issues and pull requests against GitLab repositories directly from incident investigation conversations
####### GitOps Runbooks
- Git-backed Runbooks: Runbooks stored in a Git repository can now be connected to AKI, enabling version-controlled and reusable investigation playbooks delivered via GitOps
####### Incident Investigation Improvements
- Configurable Investigation Approval: The auto-investigation approval requirement is now configurable with fine-grained scope controls. Operators can define which applications, namespaces, or clusters require human approval and tune the sensitivity threshold independently
- Auto-generated Incident Titles: AKI automatically generates a descriptive incident title based on investigation context at the start of each incident
- Git Pull Request Creation: AKI can create GitHub and GitLab pull requests as part of incident remediation workflows
- Improved Incident Webhook: The incident creation webhook now accepts a separate
titleanddescription, giving the agent better initial context without conflating the two
####### Security
- RBAC Enforcement for Tool Approval: When a user approves a mutable AKI tool call (sync, patch, delete, etc.), the platform now verifies the approving user has the required Argo CD RBAC permission before execution
Platform Enhancements
####### Autoscaling & Performance
- App-Controller VPA: The Argo CD application controller now uses Vertical Pod Autoscaling (VPA) to automatically right-size CPU and memory resources
- Upgrade Jitter: Agent upgrades are now spread across time windows to reduce simultaneous upgrade load on the platform
####### Security & Access Control
- Scoped Repository Secret Access: Agents now only receive secrets for the repositories they actively use, reducing blast radius in the event of a compromised agent
####### Notifications
- Alert Type Support: Notification preferences can now be configured per alert type, giving users fine-grained control over which alert categories they receive
- Email Unsubscribe Link: Notification emails now include an unsubscribe link
####### UI & Usability
- Organization Member Search: The organization members list now supports search
- Maintenance Mode Filtering: The cluster list can be filtered to show only clusters currently in maintenance mode
- Promotion Controller Inline Docs: The Kargo promotion controller configuration now displays inline documentation
####### CLI & GitOps Agent Installation
- Helm Chart for Agent Installation: A new Helm chart enables GitOps-driven agent installation via
akuityCLI. The chart is published toquay.io/akuity/akuity-platform-charts/akuity-agentand the CLI image toquay.io/akuity/akuity-cli - CLI Annotation Support: Argo CD instance annotations can now be set directly from the CLI
####### Infrastructure
- Pod Labels and Annotations Inheritance: Pods can now be configured to inherit labels and annotations from parent resources
Helm Chart Improvements
- Monitoring Resources: The self-hosted chart now includes optional Prometheus alerts, ServiceMonitors, PodMonitors, a Grafana dashboard, and a Grafana datasource. All monitoring resources are off by default (
monitoring.enabled: false) and each sub-resource can be toggled independently
Bug Fixes
- Fixed redirect to the original Argo CD UI path after authentication
- Fixed an issue where configuring a kustomize version without the
vprefix resulted in an invalid configuration - Fixed incident auto-resolution when a target remains healthy for consecutive health checks
- Fixed auto-sync event parsing
Chores
- Agent updated to v0.5.88 with CPU and memory optimizations for
repo-server-proxyand the application informer
v0.23.4
This is a small patch releasing fixing a bug when providing alternative/extra versions for Argo CD
v0.24.2
This is a small patch releasing fixing a bug when providing alternative/extra versions for Argo CD
v0.25.1
This is a small patch releasing fixing a bug when providing alternative/extra versions for Argo CD
v0.29.1
This is a small patch releasing fixing a bug when providing alternative/extra versions for Argo CD
v0.28.3
This is a small patch releasing fixing a bug when providing alternative/extra versions for Argo CD
v0.27.3
This is a small patch releasing fixing a bug when providing alternative/extra versions for Argo CD
v0.26.3
This is a small patch releasing fixing a bug when providing alternative/extra versions for Argo CD
v0.29.0
Features
Argo CD 3.3 Support
- Argo CD 3.3: The platform now supports Argo CD v3.3 (v3.3.0 through v3.3.3) for new and existing instances
Kargo Updates
- New Kargo Versions: Added support for Kargo v1.6.4, v1.7.9, v1.8.12, v1.9.0 through v1.9.5
- Custom Promotion Steps RBAC: Added RBAC support for running self-hosted promotion controllers with custom steps
- Separate Promotion Executor Image: Kargo 1.10+ now uses a dedicated promotion executor image
- Kargo Ingress Compression: Added compression middleware to Kargo ingress, reducing UI extension payload size from ~30MB to ~8.5MB
Kine Health & Observability
- Kine Prometheus Metrics: New Prometheus metrics (
kine_actual_lag,kine_lag_ratio) provide visibility into kine health per instance, enabling proactive monitoring and alerting - akputil Kine Commands: New
kine statusandkine compactsubcommands inakputilfor diagnosing and resolving kine health issues in self-hosted deployments - Kine Tuning: New Helm values (
instanceValues.k3s.*andkargoInstanceValues.k3s.*) allow tuning kine compaction behavior for Argo CD and Kargo instances, including compaction interval, timeout, and batch size
K3s Update
- K3s 1.33.8: Upgraded k3s from 1.33.5 to 1.33.8
Maintenance Mode
- User-Configurable Maintenance Mode: Users can now directly set and manage maintenance mode for Argo CD and Kargo agents without internal intervention
- Auto-Expiry: Maintenance mode now supports a configurable expiry duration; once elapsed, maintenance mode is automatically removed for both Argo CD and Kargo agents
- Notification Suppression: Clusters and agents in maintenance mode are excluded from degraded cluster alerts
Organization Management
- Multi-Region Organization Support: Organizations across all Akuity Platform regions are now surfaced in a single request, enabling seamless organization switching between regions from the UI
Security
- Container Security Hardening: Added
runAsNonRoot,allowPrivilegeEscalation: false, and dropped all Linux capabilities across agent components (agent-server, applicationset-controller, dex, k3s)
UI Extensions
- Argo CD UI Improvements: Sync and out-of-sync metrics are now visualized in the Argo CD UI extension; improved default zoom behavior on application nodes
- ApplicationSet Extension: The ApplicationSet management extension has been migrated to the updated UI extensions framework
- Crossplane Extension: The Crossplane extension has been migrated to the updated UI extensions framework
- Support Indicator: A support status indicator has been added to the platform UI
Chart Updates
The chart now supports configuring the following:
loadBalancerClassfor the Traefik load balancer service, allowing use of environment-specific load balancer implementations- Kine compaction tuning for Argo CD instances (
instanceValues.k3s.etcd_compaction_interval,instanceValues.k3s.kine_compact_timeout,instanceValues.k3s.kine_compact_batch_size) and Kargo instances (kargoInstanceValues.k3s.etcd_compaction_interval,kargoInstanceValues.k3s.kine_compact_timeout,kargoInstanceValues.k3s.kine_compact_batch_size)
Bug Fixes
- Terraform Provider: Fixed several issues with resource customizations including wildcard patterns (e.g.,
*.k8s.io_Certificate), key mapping inconsistencies inargocd-cm, improved error handling, and fixedserver_side_diff_enabledinconsistencies - Webhook Notifications: Fixed webhook notifications that were only delivering ping events instead of all configured event types
- Addon Delete Events: Fixed a PostgreSQL delete trigger bug where addon delete events were silently failing to broadcast to streaming subscribers, causing missed reconciliation events
- Kargo Promotion Events: Fixed a permanent failure state that occurred when a Kargo promotion event was missed
- Kargo gRPC: Increased the maximum gRPC message size for Kargo to handle larger payloads
- IPv6 Support: Improved DNS format handling for proper IPv6 address compatibility
- Self-Hosted FQDN Resolution: Fixed FQDN fetching for self-hosted deployments
Chores
- Agent updated with stability improvements, CVE fixes, and Kustomize validation safeguards
- Dependency updates across Go and frontend packages
v0.28.2
This is the second patch release of the 0.28 release. There are several bugfixes:
- Multiple fixes for ensuring stability when running in IPv6 environments
- Addresses a race condition for the Kargo audit log that could cause the processing loop to permanently hang under very specific circumstances
v0.27.2
This is a patch release to fix an issue where the hostname for Argo and Kargo instances could get set to an empty string if the FQDN was unset. Users should upgrade to this version if they're running any 0.27 version
v0.28.1
This is a patch release to fix an issue where the hostname for Argo and Kargo instances could get set to an empty string if the FQDN was unset. Users should upgrade to this version if they're running any 0.28 version