AI Agents

  • Added

    • components.<name>.semverFilter and gitops.self.semverFilter select a dev channel: a Go regexp rendered as OCIRepository.spec.ref.semverFilter, which Flux applies to the registry’s tags before it evaluates the semver range. With a prerelease-admitting range (>=3.0.0-0 <4.0.0-0) and the filter of one branch’s dev builds (.*-dev\.<sanitized-branch>\..*) a component — or, under self-management, the chart itself — follows that branch’s newest build and never falls back to a stable tag. Unset by default. The dead components.<name>.filterTags block (an ImagePolicy field, never an OCIRepository one, undeclared in the schema) is gone.

    Changed

    • BREAKING — meta chart 4.0: components.kagent delivers the kagent line (kagent API v2, kagent.dev/v1alpha3). components.kagent and the new roster entry components.kagent-crds resolve the charts kagent and kagent-crds of giantswarm/kagent-upstream (upstream kagent main at a pinned commit plus the carried patches) from oci://ghcr.io/giantswarm/kagent/helm on the line’s release range >=0.11.0-gs.1 <0.11.1-0 — the releases 0.11.0-gs.N of upstream 0.11.0, not the line’s 0.11.0-dev.giantswarm.… builds (Flux’s Masterminds semver compares prerelease identifiers left to right, dev < gs; the -0 on the ceiling admits prereleases at all, and the ceiling holds the patch because a prerelease is confined to no patch tuple; a bare 0.11.0 would be admitted, should upstream’s release ever appear at this OCI path) — instead of the giantswarm/kagent 0.x wrapper (kagent 0.10, v1alpha2) from gsoci. kagent-crds renders the five v1alpha3 CRDs as templates carrying helm.sh/resource-policy: keep (no crds/ dir, no crds: policy), follows components.kagent unless switched explicitly (agent-platform.componentEnabled), the kagent release and the connectivity release dependsOn it, and the render refuses kagent on without it (agent-platform.validateKagentCrds). The kagent: block names one build of the line: registry: ghcr.io, the fork’s image names (giantswarm/kagent/{controller,golang-adk,ui}), an explicit tag equal to the chart version of the build (upstream’s chart falls back to .Chart.Version, which under helm-controller is <version>+<oci digest>, an invalid image tag), kagent.harness.image — the Go ADK image by digest the connectivity chart renders the platform Harness from (the CRD accepts no tag) — controller.substrate.* (ate-api, atenet-router in ate-system, the default WorkerPool) and substrateWorkerPool (kagent-default, four gVisor workers on the Giant Swarm Substrate line’s worker image), pgvector on the bundled Postgres; a re-pin of the line moves the tag, the digest and the two ranges together from the fork’s builds.md ledger (README “Re-pinning the kagent line”). Every sibling range selects the kagent API v2 line: agent-platform-connectivity >=4.0.0 <5.0.0 (its own major; the 3.x line held <4.0.0), agent-manager and backstage 1.x (their 1.0 releases; until published the ranges resolve nothing — both are off by default), model-manager >=0.20.0 <1.0.0 (0.20.0 renders the ModelConfig version the cluster serves; the line stays 0.x); no semverFilter anywhere by default, gitops.self.semverFilter empty. agent-manager.agentChart.semver defaults to 1.x (was x.x.x, which would have rolled the Generic agent chart 1.0.0 to every existing agent the moment it is published). examples/customer-bom.yaml pins the line (kagent and kagent-crds 0.11.0-gs.1 — the same release, one build — agent-platform-connectivity 4.0.0, agent-manager and backstage 1.0.0, model-manager 0.20.0). Every installation acts (UPGRADE.md “3.x → 4.0”): the release is inert until the fleet’s agent-platform range bound (<4.0.0) is lifted per installation; a 4.0 installation with kagent on needs Kubernetes 1.35 with the ClusterTrustBundle, ClusterTrustBundleProjection and PodCertificateRequest feature gates and Agent Substrate in ate-system. make verify-meta (tests/verify-kagent-wiring.py, with tests/fluxsemver.py reimplementing Flux’s constraint semantics offline) asserts the sources, the range’s admitted and refused shapes, one build (tag and range on one upstream version, the Harness image a digest), the omitted keys and the retired ones; make verify-components the sibling ranges, kagent-crds following kagent and the BOM; make verify-components-charts pulls the managers’ and the kagent line’s charts at what the ranges resolve to (the way Flux resolves, -gs.N prereleases included) and renders the forwarded blocks against them — while a range waits for an unpublished release (a sibling’s 1.0, the line’s first tag) it renders against the build kagent.tag names or the newest 0.x and says so.

    Removed

    • The ten bundled example agents’ value blocks (kagent.k8s-agent … kagent.cilium-debug-agent, each enabled: false with namespaceOverride: kagent), kagent.controller.skillsInitImage and the METRICS_BIND_ADDRESS / METRICS_SECURE entries of kagent.controller.env: the kagent line ships none of the agents and no skills-init image, and its controller serves no Prometheus /metrics. With that kagent.serviceMonitor.enabled defaults to false in both charts and the forwarded kagent.controller.metrics.enabled is false explicitly — the connectivity chart’s controller metrics Service and ServiceMonitor and upstream’s metrics Service would point at a port nothing listens on and sit at up=0; nothing reads those metrics (the fleet’s KagentControllerDown reads kube-state-metrics). make verify-global asserts the default renders no kagent monitor and that kagent.serviceMonitor.enabled: true still renders it under the global gate; both go back on when upstream serves metrics. The ATS kind smoke keeps kagent and agent-manager off and skips the agent round trips with the reason while the cluster has neither the feature gates nor Substrate (tests/ats/values-kagent.yaml, KAGENT_ON); agentlab proves them, giantswarm/agent-platform#343 turns them back on.
  • Fixed

    • agent-manager.agentChart.semver is >=0.2.1 <1.0.0 (was x.x.x) in both charts. Generic agent chart 1.0.0 (published 2026-09-11) renders the kagent API v2 shape (kagent.dev/v1alpha3 AgentTemplate), which no 3.x installation can install; agent-manager composes this range into the per-namespace agent OCIRepository it writes on every create_agent, and the meta chart’s explicit forward wins over agent-manager 0.4.5’s own bounded default — so an open range here pulled 1.0.0 into every new managed namespace (the ATS round trip on this branch reproduced it: HelmRelease ats-managed-agent InstallFailed no matches for kind AgentTemplate). The three pre-existing per-namespace OCIRepository objects were bounded by hand already; this makes every future one bounded too. Every installation with agent-manager on rolls the agent-manager pod once (--agent-chart-semver changes); nothing else in the render differs. The 4.0 line moves the range to 1.x.
  • Fixed

    • (agent-manager) Compose the bounded agent chart range on the 3.x line

    Full Changelog: https://github.com/giantswarm/agent-platform/compare/v3.22.8...v3.22.9

  • Changed

    • The agentgateway data plane runs the Giant Swarm line of agentgateway: the connectivity chart’s agentgateway.proxy.image.tag (rendered into AgentgatewayParameters) is v1.5.1-gs.1 — upstream v1.5.0 rebuilt, scanned and signed in giantswarm/agentgateway-upstream (its FORK.md; tracking giantswarm/giantswarm#37758) and mirrored into gsoci by the retagger — the same release the giantswarm/agentgateway packaging chart pins for the controller, so a fix the platform needs in agentgateway can be carried on the line and reaches every installation as the next -gs.N release. Every installation with the agentgateway component on rolls its data-plane pods once to an image built from the same source as before; nothing else in the render changes.
  • Changed

    • components.agent-platform-connectivity.versionRange is >=1.0.0 <4.0.0 (was >=1.0.0, open upwards). The connectivity chart is released off the same tag as this chart and every installation’s Flux re-resolves the range on each reconcile of the connectivity OCIRepository, so the first v4.0.0 tag of this repository – the kagent API v2 line (giantswarm/giantswarm#37705), whose connectivity templates render kagent.dev/v1alpha3 objects – would have upgraded the wiring of every 3.x installation within minutes, ahead of its cut-over (#348). The 3.x line now stays on its own wiring chart; 4.0 resets the range to its line. No installation needs to act: the connectivity OCIRepository’s spec.ref.semver changes (a Flux spec update; the current 3.x release stays resolved) and nothing else in the render differs. make verify-components asserts the bound.
  • Fixed

    Full Changelog: https://github.com/giantswarm/klaus/compare/v0.1.9...v0.1.10

  • Fixed

    • A family tool is callable by a session that has not listed tools (#1204). The family routing index is process-global and in memory, and the tools of members that require per-session authentication entered it only when a session authenticated to them ran list_tools. A muster restart empties the index while the sessions’ tokens and cached capabilities persist, so every session that held on across a rollout got Tool execution failed: tool not found: x_prometheus_get_rules from call_tool for each family tool – with core_mcpserver_list reporting the member Connected – until it listed tools again; a session that signed in and called without ever listing hit the same. call_tool now fills the index from the session’s view, the pass list_tools runs, when the name lies in a declared family’s name space and the index does not know it, and the call goes through. When the name still cannot be routed, the error says so in terms of the family and the session: tool x_kubernetes_list_podz is not exposed under family "kubernetes" by any member this session is connected to (k8s-a), or, for a session connected to no member, which members exist and that core_auth_login connects one – instead of tool not found. Scenario: mcpserver-family-tool-call-without-listing.
  • Fixed

    • (deps) Update module github.com/giantswarm/selfupdate-cosign to v0.1.1 in #476 by @renovate[bot]

    Full Changelog: https://github.com/giantswarm/klaus/compare/v0.1.8...v0.1.9

  • Fixed

    Full Changelog: https://github.com/giantswarm/muster/compare/v5.18.1...v5.18.2

  • Fixed

    Full Changelog: https://github.com/giantswarm/klaus/compare/v0.1.7...v0.1.8