Skip to content

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 22:27
· 26 commits to main since this release

What's Changed

  • 🚀 Autoscaling: Each agent autoscales independently on the concurrent in-flight load its broker handles.
  • 🛡️ Broker rate limiting: Cap concurrent in-flight A2A requests per agent, shedding excess (HTTP 429 + Retry-After, gRPC RESOURCE_EXHAUSTED) to protect an external dependency like an LLM quota. Composes with autoscaling - scale-up is suppressed once total in-flight reaches the cap.
  • 🧹 Graceful pod termination: Draining before termination, smooth and precise autoscaling down and pod rotation.
  • 📈 Broker observability.

Installation

kubectl create namespace kynomesh-system

# Install kynomesh controller
kubectl apply -n kynomesh-system -f https://github.com/kynoproj/kynomesh/releases/download/v0.6.0/install.yaml

Pull Requests

  • feat: get broker image to AgentDeploy pod by @whynowy in #1
  • chore: expose builtin envs to the containers by @whynowy in #2
  • chore: discard mergo by @whynowy in #3
  • chore: AgentDeploy obj in env by @whynowy in #4
  • chore: refactor to move constants by @whynowy in #5
  • feat: broker to support tls by @whynowy in #6
  • chore: more leader election config by @whynowy in #7
  • chore: use both agentset and agentdeploy names in the labels by @whynowy in #8
  • feat: broker proxy implementation by @whynowy in #9
  • feat: mount socket volume by @whynowy in #10
  • feat: add init container to create socket file by @whynowy in #11
  • feat: switch to using UDS by @whynowy in #12
  • feat: introduce pattern and entry by @whynowy in #13
  • fix: incorrect container and brokerTemplate settings by @whynowy in #14
  • feat: broker passthrough all the traffic by @whynowy in #15
  • feat: introduce 2nd port for metrics and health check by @whynowy in #16
  • docs: simple readme by @whynowy in #17
  • fix: allows passthrough when agentcard is missing by @whynowy in #18
  • chore: more test cases by @whynowy in #19
  • chore: broker fqdn by @whynowy in #20
  • feat: make it possible to run on the local by @whynowy in #21
  • ci: image build by @whynowy in #22
  • ci: nightly build by @whynowy in #23
  • chore: update the ports and broker endpoints by @whynowy in #24
  • chore: update local dev port to 8088 by @whynowy in #25
  • chore: add AGENTSET_NAME and AGENTDEPLOY_NAME to the env by @whynowy in #26
  • feat: write topoloty file to runtime by @whynowy in #27
  • chore: do not create socket file in init container by @whynowy in #28
  • docs: readme by @whynowy in #29
  • docs: core conceps by @whynowy in #30
  • feat: load serverinfo when broker starts by @whynowy in #31
  • feat: add readiness and live probe to the agent container by @whynowy in #32
  • feat: honor user provided readiness and liveness config parameters by @whynowy in #33
  • ci: enable dependent bot by @whynowy in #34
  • chore(deps): bump actions/cache from 4 to 5 by @dependabot[bot] in #35
  • chore(deps): bump codecov/codecov-action from 5 to 6 by @dependabot[bot] in #36
  • chore(deps): bump imjasonh/setup-crane from 0.5 to 0.6 by @dependabot[bot] in #41
  • chore(deps): bump actions/download-artifact from 4 to 8 by @dependabot[bot] in #39
  • chore(deps): bump actions/setup-node from 4 to 6 by @dependabot[bot] in #38
  • chore(deps): bump golang.org/x/net from 0.49.0 to 0.55.0 by @dependabot[bot] in #37
  • chore(deps): bump go.uber.org/zap from 1.27.1 to 1.28.0 by @dependabot[bot] in #42
  • chore(deps): bump google.golang.org/grpc from 1.80.0 to 1.81.1 by @dependabot[bot] in #43
  • chore(deps): bump golang.org/x/tools from 0.44.0 to 0.45.0 by @dependabot[bot] in #44
  • chore(deps): bump sigs.k8s.io/controller-tools from 0.20.1 to 0.21.0 by @dependabot[bot] in #40
  • ci: fix node and cache warnings by @whynowy in #45
  • refactor: mv probe pkg and more logs by @whynowy in #46
  • feat: honor imagePullPolicy configed in the controler env by @whynowy in #47
  • feat: enable optional pprof env by @whynowy in #48
  • chore(deps): bump actions/upload-artifact from 5 to 7 by @dependabot[bot] in #51
  • chore(deps): bump docker/setup-buildx-action from 2 to 4 by @dependabot[bot] in #52
  • chore(deps): bump google.golang.org/grpc/cmd/protoc-gen-go-grpc from 1.6.1 to 1.6.2 by @dependabot[bot] in #53
  • chore(deps): bump github.com/go-swagger/go-swagger from 0.34.0 to 0.34.1 by @dependabot[bot] in #54
  • chore(deps): bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.28.0 to 2.29.0 by @dependabot[bot] in #55
  • feat: add publicBaseURL to agent config by @whynowy in #56
  • fix: topology file not readable to the broker by @whynowy in #57
  • fix: permission issue for release by @whynowy in #58
  • fix: release script by @whynowy in #59
  • chore: changelog script by @whynowy in #60
  • chore: only checksum kynomesh binaries by @whynowy in #61
  • feat: create anothe normal service for internal access by @whynowy in #62
  • docs: installation doc by @whynowy in #63
  • feat: introduce entry service for agentset by @whynowy in #64
  • docs: updated CHANGELOG.md by @github-actions[bot] in #65
  • fix: error in Makefile by @whynowy in #66
  • fix: headless service exposes introspect port by @whynowy in #67
  • fix: kubectl wait errors out without waiting due to race by @whynowy in #68
  • docs: quick-start by @whynowy in #69
  • chore(deps): bump codecov/codecov-action from 6 to 7 by @dependabot[bot] in #70
  • chore(deps): bump golang.org/x/net from 0.55.0 to 0.56.0 by @dependabot[bot] in #71
  • chore(deps): bump golang.org/x/tools from 0.45.0 to 0.46.0 by @dependabot[bot] in #72
  • docs: build mkdocs by @whynowy in #73
  • ci: set up gh page workflow by @whynowy in #74
  • docs: publish multi-version docs by @whynowy in #75
  • chore: action rename by @whynowy in #76
  • chore: workflow naming by @whynowy in #77
  • docs: updated CHANGELOG.md by @github-actions[bot] in #78
  • chore: use dev instead of latest for the docs by @whynowy in #79
  • fix(docs): dns for each agentdeploy by @whynowy in #80
  • feat(daemon): add gRPC + REST proto for per-AgentSet metrics daemon by @whynowy in #81
  • chore(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #83
  • feat(daemon): implement per-AgentSet metrics daemon by @whynowy in #82
  • feat: daemon service clients by @whynowy in #84
  • feat: reconcile daemon deployment and service by @whynowy in #85
  • refactor: split to multiple files for reconcilers by @whynowy in #86
  • chore: remove finalizers by @whynowy in #87
  • chore: agentset and agentdeploy name validation by @whynowy in #88
  • feat: metrics for broker by @whynowy in #92
  • feat: expose metric for stream messages by @whynowy in #93
  • fix: SSE events flush immediately by @whynowy in #94
  • chore(deps): bump imjasonh/setup-crane from 0.6 to 0.7 by @dependabot[bot] in #95
  • chore(deps): bump actions/cache from 5 to 6 by @dependabot[bot] in #96
  • chore(deps): bump github.com/go-swagger/go-swagger from 0.34.1 to 0.35.0 by @dependabot[bot] in #97
  • chore(deps): bump github.com/prometheus/common from 0.67.5 to 0.69.0 by @dependabot[bot] in #98
  • chore(deps): bump golang.org/x/tools from 0.46.0 to 0.47.0 by @dependabot[bot] in #99
  • feat: init commit for autoscaling by @whynowy in #118
  • feat: autoscaling sampler and scaler by @whynowy in #119
  • fix: populate lastScaleAt and use hash for sample history by @whynowy in #120
  • feat: staleness guard for sampled data by @whynowy in #121
  • feat: flush tracked metrics on termination by @whynowy in #122
  • chore: correct cm labels and some log labels for autoscaling by @whynowy in #123
  • feat: metrics for autoscaling by @whynowy in #124
  • chore: close daemon clients which have no references by @whynowy in #125
  • chore(deps): bump google.golang.org/grpc from 1.81.1 to 1.82.0 by @dependabot[bot] in #127
  • feat: time-based confidence and adaptive sampling window by @whynowy in #128
  • fix: dedup same-timestamp samples in sanitize by @whynowy in #129
  • chore: Remove retired goreport card by @whynowy in #130
  • chore(deps): bump github.com/prometheus/common from 0.69.0 to 0.70.0 by @dependabot[bot] in #131
  • chore(deps): bump golang.org/x/tools from 0.47.0 to 0.48.0 by @dependabot[bot] in #132
  • chore: refactor to make Decide pure math function by @whynowy in #134
  • chore: update sampling cadence to 60s by @whynowy in #135
  • test: start e2e test by @whynowy in #136
  • feat: broker container probes by @whynowy in #141
  • chore(deps): bump google.golang.org/grpc from 1.82.0 to 1.82.1 by @dependabot[bot] in #140
  • chore(deps): bump actions/setup-node from 6 to 7 by @dependabot[bot] in #138
  • chore(deps): bump actions/setup-go from 6 to 7 by @dependabot[bot] in #139
  • test: test cases for sampler and autoscaler start loop by @whynowy in #142
  • test: e2e test for scaling by @whynowy in #143
  • fix: scale up/down follows same rules by @whynowy in #144
  • chore(deps): bump github.com/prometheus/common from 0.70.0 to 0.70.1 by @dependabot[bot] in #149
  • chore(deps): bump actions/setup-python from 6 to 7 by @dependabot[bot] in #148
  • chore(deps): bump github.com/go-swagger/go-swagger from 0.35.0 to 0.35.3 by @dependabot[bot] in #151
  • chore(deps): bump github.com/prometheus/client_golang from 1.23.2 to 1.24.1 by @dependabot[bot] in #150
  • chore(deps): bump github.com/a2aproject/a2a-go/v2 from 2.3.1 to 2.4.0 by @dependabot[bot] in #152
  • chore: a2acli defaults to output text instead of json by @whynowy in #153
  • feat: draining before termination by @whynowy in #158
  • chore(deps): bump github.com/go-swagger/go-swagger from 0.35.3 to 0.36.1 by @dependabot[bot] in #154
  • chore(deps): bump google.golang.org/grpc from 1.82.1 to 1.83.0 by @dependabot[bot] in #156
  • chore(deps): bump github.com/grpc-ecosystem/grpc-gateway/v2 from 2.29.0 to 2.30.0 by @dependabot[bot] in #155
  • chore: retry lychee check transient failures by @whynowy in #160
  • feat: pod termination grace period bugget by @whynowy in #161
  • fix: flaky e2e test by @whynowy in #162
  • feat: rate limit for brokers - part 1 by @whynowy in #163
  • feat: broker rate limit part 2 by @whynowy in #164
  • feat: incorporate rate limit with autoscaling by @whynowy in #166
  • docs: rate limiting by @whynowy in #167
  • fix(controller): pod replicas respect min/max by @whynowy in #169
  • test(e2e): rate limiting by @whynowy in #168

Full Changelog: https://github.com/kynoproj/kynomesh/commits/v0.6.0