AI Agents

  • Fixed

    • muster’s own retry of a refused fresh token also reaches a session that has not listed its tools yet. The retry skipped a session muster had not seen list tools or call one (a client that initialized and read auth://status), as if it had ended. The session is now tracked when the retry is scheduled, and its teardown is what ends the retries. (#1377)
  • Fixed

    • muster auth login no longer waits for a callback another process received. The OAuth callback listened on 127.0.0.1:3000 only, while the browser resolves the redirect’s localhost to ::1 first: a local dev server on [::1]:3000 received the callback and the CLI waited for its full timeout, saying nothing. The callback now listens on the port on 127.0.0.1 and ::1 (127.0.0.1 alone on a host without IPv6 loopback), and a port held on either address stops the login at once with callback port <port> is already in use on <address> by: and the holder’s socket, pid and command line. muster auth login --callback-port sets the port, as MUSTER_OAUTH_CALLBACK_PORT does. (#1280)
  • Fixed

    • Strip credentials from the origin URL copied into clones in #368 by @teemow
    • Check out git-LFS files as pointers in workspace clones in #370 by @teemow

    Full Changelog: https://github.com/giantswarm/klausctl/compare/v0.5.0...v0.5.1

  • Fixed

    • A token-exchange server recovers on its own when its token endpoint answers again. A caller’s exchange that timed out, was refused or got a 5xx or a gateway’s HTML page left the server Failed (reason TokenExchangeEndpoint) with no retry, so MusterMCPServerFailed kept paging until a user’s session happened to exchange a token. Now the server is put on the reconnect backoff and each retry probes the token endpoint with the exchange’s client credentials and a subject token no issuer signed: while the probe gets no answer the server stays Failed (never Unreachable), and the first OAuth answer returns it to Awaiting Session, with no caller involved. invalid_client and an unknown connector are still not retried. A Failed server’s Ready message names the next attempt. (#1368)
  • Changed

    • The agentgateway line at 2.2.1 for the controller and the data planes, in both charts (giantswarm/agent-platform#645). 2.2.0 re-pins the line onto upstream main @ 3528a428 with the carried patches replayed; 2.2.1 adds the Substrate resume refusal. The four tags (agentgateway.controller.image.tag and agentgateway.proxy.image.tag of the meta and the connectivity chart) move as one: agentgateway.controller.image names its registry, so Renovate’s helm-values manager finds the controller as it finds the data plane, renovate-custom.json5 groups both images into one agentgateway line PR, and verify-model-catalog holds all four tags equal. The built-in model catalog of 2.2.1 prices Claude Opus 5.5, so the llmRouting.modelCatalog overlay drops its entry; Claude Sonnet 5.5 stays.
  • Fixed

    • muster waits for its Valkey at start instead of crash-looping. When muster and its Valkey restarted together (a reclaimed node), muster gave up on the session-store Valkey after 20 s and exited with mcp-aggregator service failed; the kubelet restarted it until Valkey was up (five restarts in three minutes, a ContainerRestartingTooOften page, every MCP call a 503). Now muster keeps dialling with capped backoff (1 s doubling to 8 s), one Valkey for the session stores did not answer, retrying line per attempt, and binds its port once Valkey answers: the pod is not ready while it waits and ready within seconds after. The chart’s new startupProbe (/health, every 5 s, 60 failures) keeps the liveness probe off for up to 5 minutes of start. Only a configuration error ends the start: credentials or database refused, a malformed address, a certificate that does not verify. (#1364)
  • Added

    • Sessions list and message each other: kagent’s MCP server is registered with muster (giantswarm/agent-platform#705). With kagent’s controller route and muster on, the connectivity chart renders MCPServer kagent in the agent-platform tool group and an in-cluster HTTPRoute kagent-mcp. The route serves /kagent/mcp on the data plane’s plaintext listener, rewrites it to the controller’s /mcp on the kagent backend, and sits behind kagent-mcp-jwt, a twin of the kagent-controller-jwt policy (the CRD takes one kind of target per policy). muster forwards the session’s IdP token, so every call runs as the person who ran the turn. Agents on the agent-platform toolset preset get x_kagent_list_agent_instances (the person’s other ready sessions) x_kagent_invoke_agent_instance (a message to one of them, answered when its turn ends; kagent.controllerRoute.mcp.timeout, default 300 s, the CRD’s maximum) and the checkpoint and fork tools, and the Dev Portal’s MCP servers page lists kagent in the Agent Platform group. kagent.controllerRoute.mcp.enabled: false turns it off. make verify-kagent-route asserts the route, the CR, the twin policy, the off switches and the path guard.
  • Changed

    • Release-v3.x releases no longer take the Latest marker

    Full Changelog: https://github.com/giantswarm/agent-platform/compare/v3.23.4...v3.23.5

  • Changed

    • Release branches skip the branch-only jobs like main

    Full Changelog: https://github.com/giantswarm/agent-platform/compare/v3.23.3...v3.23.4

  • Changed

    • Release branches publish through the tag pipeline only

    Full Changelog: https://github.com/giantswarm/agent-platform/compare/v3.23.2...v3.23.3