Repository navigation
Releases
v1.0.0-rc4
v1.0.0
What's Changed
Features
- feat(streaming): configurable nginx, controller, and UI inactivity ti… by @yanivmn in #1973
- feat(helm): add controller service annotations by @anthonyhaussman in #2088
- feat: enable sharing of chat sessions by @onematchfox in #1935
- feat: substrate support for BYO and python runtimes for SandboxAgent CR by @jmhbh in #2043
- feat(substrate): bump agent substrate to 0.0.7 by @supreme-gg-gg in #2109
- feat(substrate): bump agent substrate to 0.0.8 by @jjamroga in #2140
- feat(helm/kagent): support deployment annotations by @anthonyhaussman in #2143
- feat: add nodeSelector support to agent helm charts by @the-mentor in #2145
- feat: expose icon, provider, documentation URL and version on agent A2A card by @QuentinBisson in #2188
- feat: add claude ACP sandbox target by @the-mentor in #2189
- feat(sandbox-agents): Store session state in
durableDirvolume for declarative sandbox agents by @jmhbh in #2171 - feat(helm): add UI HTTPRoute by @younsl in #2165
- feat(helm): bump bundled oauth2-proxy subchart to ~10.7.0 by @elihai-risk in #2254
- feat: default nodeSelector for agent deployments (--default-agent-node-selector) by @elihai-risk in #2259
- feat(helm): add podLabels for controller and UI pod templates by @elihai-risk in #2237
- feat(helm): add extraObjects for arbitrary manifests by @younsl in #2174
- feat(ui-test): Playwright ui tests foundation stage 0 by @cjlg-soloio in #2262
- feat: allow read-only shares to read A2A tasks by @QuentinBisson in #2191
- feat(controller): make Go (ADK) runtime agent image independently configurable by @QuentinBisson in #2021
- feat(helm): allow custom annotations on the default ModelConfig by @marians in #2201
- feat(ui-test): Playwright UI E2E suite — helpers + feature flows (stage 2) by @cjlg-soloio in #2264
- feat: serve A2A ListTasks from the task store by @QuentinBisson in #2187
- feat(models): add maxCompletionTokens for OpenAI by @anthonytwh in #2175
- feat(models): wire maxOutputTokens for native Gemini and Vertex by @anthonytwh in #2147
- feat: add envFrom support to agent deployment spec by @uncycler in #2321
- feat: add native AWS Bedrock Guardrails support to ModelConfig by @sanskar-singh-2403 in #2323
- feat(bedrock): configurable Bedrock read/connect timeout by @go-faustino in #2223
- feat: add deploymentAnnotations to agent deployment spec by @anthonyhaussman in #2359
- feat(helm/kagent): allow disabling default modelconfig by @anthonyhaussman in #2142
- feat(sts): send RFC 8707 resource and audience on token exchange by @QuentinBisson in #2106
- feat(sts): send RFC 8707 resource and audience on token exchange (Python) by @QuentinBisson in #2107
- feat(ui): add agent namespace to list view by @onematchfox in #2364
- feat(helm): add affinity and topologySpreadConstraints on Kagent controller and ui by @anthonyhaussman in #2365
- feat: support responses api in kagent harness by @supreme-gg-gg in #2369
- feat(api): add topologySpreadConstraints to SharedDeploymentSpec by @anthonyhaussman in #2384
- feat(helm): add PodDisruptionBudget for controller and UI by @anthonyhaussman in #2392
- feat: add helm values to configure pgx connection by @supreme-gg-gg in #2407
- feat: add TTL and cleanup for hard-deleting sessions and events by @supreme-gg-gg in #2409
- feat: support fetching skills from S3 by @supreme-gg-gg in #2408
- feat: add API v2 configuration CRDs by @EItanya in #2426
- feat: add agent instance lifecycle contracts by @EItanya in #2427
- feat: add upstream A2A gRPC runtime servers by @EItanya in #2428
- feat: add AgentTemplate preparation and immutable revisions by @EItanya in #2434
- feat: add imperative AgentInstance lifecycle by @EItanya in #2436
- feat: add minimal API v2 controller runtime by @EItanya in #2442
- feat: add AgentInstance suspend and resume by @EItanya in #2445
- feat: add AgentInstance A2A gateway by @EItanya in #2446
- feat: persist AgentInstance A2A tasks by @EItanya in #2463
- feat: add AgentInstance message idempotency by @EItanya in #2477
- feat: extend the AgentInstance A2A gateway by @EItanya in #2478
- feat: load Agent Plugins in Go runtime by @EItanya in #2500
- feat(python-adk): honor isolateSessions for remote agent tools by @Whxuan0701 in #2504
- feat: support max OpenAI reasoning effort by @wattmto in #2418
- feat: compile shared agent templates by @EItanya in #2521
- feat: auto-suspend AgentInstances and add checkpoints by @EItanya in #2534
- feat(helm): allow scheduling the bundled PostgreSQL pod by @CarlosLanderas in #2553
- feat(app): let an extension supply the A2A handler by @jjamroga in #2544
- feat: fork AgentInstances from checkpoints by @EItanya in #2555
- feat: validate protobuf requests with protovalidate by @EItanya in #2563
- feat(ui): rewrite the web interface on Vite, and give conversations a first-class API by @Charlesthebird in #2569
- feat: add API v2 MCP tasks gateway by @EItanya in #2576
- feat: expose checkpoint workflows through MCP by @EItanya in #2589
- feat(cli): add API v2 AgentInstance workflows by @codyhartsook in #2559
- feat(cli): rebuild the TUI around AgentInstances by @codyhartsook in #2605
- feat(ui): render mermaid diagrams in chat messages by @dimetron in #2636
- feat(harness): Initial Claude Code Support by @supreme-gg-gg in #2602
- feat: use ate-api actor templates by @EItanya in #2638
- feat: support status for ModelConfig by @yuval-k in #2623
- feat: add BYO A2A harness by @EItanya in #2652
- feat(harness): Initial Codex Support by @supreme-gg-gg in #2645
- feat(core): make controller startup importable and its auth replaceable by @jjamroga in #2658
- feat(models): Adding support for claude/anthropic models on Azure Foundry by @marosset in #2424
- feat(adk): support responses API for Python agents by @onematchfox in #2701
- feat(ui): read substrate statuses as words, and chart the actor mix by @Charlesthebird in #2706
- feat(substrate): Resume from golden snapshot with durable data instead of cold booting from OCI images by @supreme-gg-gg in #2715
- feat: add scheduled runs to the current agent API by @EItanya in #2741
- feat(ui): fork a conversation, and open the agent rail to extensions by @Charlesthebird in #2747
- feat(cli): add AgentTemplate apply command by @codyhartsook in #2643
- feat(harness): human-in-the-loop and pause actor on input-required by @supreme-gg-gg in #2714
- feat(ui): checkpoint a chat turn, fork from a checkpoint, and duplicate a chat by @Charlesthebird in #2775
- feat(helm): add OCI source annotations by @darshan-shanthveer-patil in #2807
- ...
v1.0.0-rc3
What's Changed
Features
- feat(models): suggest current Foundry Grok model IDs by @jayunit100 in #3513
- feat(models): suggest Bedrock Grok inference profiles by @jayunit100 in #3523
- feat(mcp): session lifecycle and read-back tools in the core MCP server by @QuentinBisson in #3339
- feat(ui): manage EgressPolicies from the UI by @alan-bentley-pgh in #3542
- feat(telemetry): record the trusted user as user.id by @krisztianfekete in #3552
- feat(runtime): bootstrap revision configuration from durable bundles by @supreme-gg-gg in #3515
Bug Fixes
- fix(cli): confirm before deleting self-managed WorkerPools on uninstall by @iplay88keys in #3511
- fix(mcp): drop invoke_agent's top-level oneOf so Gemini accepts it by @jotacamou in #3534
- fix(taskstore): finalize failed tasks after execution cancellation by @EItanya in #3541
Other Changes
- session/lifecycle: support force deletion without suspension by @shashankram in #3530
- chore(deps): upgrade Substrate to rc4 and install Atelet separately by @EItanya in #3548
- chore(deps): upgrade Substrate to v1.0.0 by @EItanya in #3555
Upgrading from v1.0.0-rc2
This release moves Substrate from v1.0.0-rc2 to v1.0.0. kagent install now installs atelet as its own substrate-atelet release, so atelet can be upgraded before ate-api-server, as Substrate's version skew policy requires.
To upgrade an install from v1.0.0-rc2, upgrade Substrate first, moving atelet to substrate-atelet, then upgrade kagent. The steps need Helm 3.17 or later. The commands use the release names and namespaces that kagent install creates.
SUBSTRATE=oci://ghcr.io/kagent-dev/substrate/helm
KAGENT=oci://ghcr.io/kagent-dev/kagent/helm
helm get values substrate -n ate-system -o yaml > substrate-values.yaml
helm get values substrate-podcert -n podcertificate-controller-system -o yaml > podcert-values.yamlAdd GoldenEgressPolicy to the preview list in substrate-values.yaml. kagent v1.0.0-rc3 needs it, and kagent install sets it for new installs.
# substrate-atelet reads the RustFS credentials from a Secret.
rustfs_key() { helm get values substrate -n ate-system -a -o json | jq -r ".rustfs.$1"; }
kubectl create secret generic kagent-rustfs-credentials -n ate-system \
--from-literal=AWS_ACCESS_KEY_ID="$(rustfs_key accessKey)" \
--from-literal=AWS_SECRET_ACCESS_KEY="$(rustfs_key secretKey)"
cat > atelet-values.yaml <<EOF
objectStore:
endpoint: http://rustfs.ate-system.svc:9000
region: us-east-1
pathStyle: true
credentialsSecret: kagent-rustfs-credentials
EOF
ATELET=(substrate-atelet $SUBSTRATE/substrate-atelet --version 1.0.0 -n ate-system \
-f substrate-values.yaml -f atelet-values.yaml)
atelet_objects() { helm template "${ATELET[@]}" | kubectl get -f - --ignore-not-found -o name; }
# 1. Upgrade the certificate controller.
helm upgrade substrate-podcert $SUBSTRATE/substrate-podcert --version 1.0.0 \
-n podcertificate-controller-system -f podcert-values.yaml --wait
# 2. Keep the atelet objects when the substrate release stops rendering them.
kubectl annotate -n ate-system --overwrite $(atelet_objects) helm.sh/resource-policy=keep
# 3. Adopt atelet in its own release and upgrade it.
helm upgrade --install "${ATELET[@]}" --take-ownership --wait
kubectl rollout status daemonset/atelet -n ate-system --timeout=5m
# 4. Upgrade the worker image, still with the v1.0.0-rc2 kagent chart.
helm upgrade kagent $KAGENT/kagent --version 1.0.0-rc2 -n kagent --reuse-values \
--set substrateWorkerPool.workerImage=ghcr.io/kagent-dev/substrate/ateworker-gvisor:v1.0.0 \
--wait
# 5. Upgrade the Substrate CRDs and control plane without atelet.
helm upgrade substrate-crds $SUBSTRATE/substrate-crds --version 1.0.0 -n ate-system --wait
helm upgrade substrate $SUBSTRATE/substrate --version 1.0.0 -n ate-system \
-f substrate-values.yaml --set atelet.enabled=false --wait
# 6. Remove the keep policy.
kubectl annotate -n ate-system $(atelet_objects) helm.sh/resource-policy-
# 7. Upgrade kagent.
helm get values kagent -n kagent -o yaml > kagent-values.yaml
helm upgrade kagent-crds $KAGENT/kagent-crds --version 1.0.0-rc3 -n kagent --wait
helm upgrade kagent $KAGENT/kagent --version 1.0.0-rc3 -n kagent -f kagent-values.yaml --waitStep 2 is required. Without it, step 5 deletes the atelet DaemonSet even though substrate-atelet owns it, because Helm deletes every object the old release listed. atelet_objects lists only objects that exist, so it skips ones Substrate v1.0.0 adds.
Step 3 restarts atelet once, as a rolling update, because substrate-atelet reads the RustFS credentials from the Secret.
Upgrade kagent last. kagent v1.0.0-rc3 sets golden egress policies, which ate-api-server rejects until step 5 enables the GoldenEgressPolicy gate.
For microVM WorkerPools, use ateworker-microvm:v1.0.0 in step 4. Update any other WorkerPools through the configuration that owns them. If you set rustfs.enabled=false, skip the Secret and set objectStore for your store instead. See the substrate-atelet values.
New Contributors
- @jayunit100 made their first contribution in #3513
- @jotacamou made their first contribution in #3534
Full Changelog: v1.0.0-rc2...v1.0.0-rc3
v0.10.6
What's Changed
Bug Fixes
- fix: move Python ADK images to Wolfi and disable Substrate on release/v0.10.x by @iplay88keys in #3539
Full Changelog: v0.10.5...v0.10.6
v1.0.0-rc2
What's Changed
Features
- feat(mcp): discover and invoke agents by @EItanya in #3486
- feat(mcp): let embedders extend the /mcp server by @alan-bentley-pgh in #3495
Bug Fixes
- fix(adk): allow the Bedrock runtime origin in Harness egress by @xianshujun in #3438
- fix(helm): narrow and separate controller RBAC permissions by @EItanya in #3378
- fix(ui): remediate CVEs in ui by @Charlesthebird in #3489
- fix(adk): retry TaskStore calls through a controller restart by @adalundhe in #3391
- fix(adk): tell the model why a person rejected a tool call by @fiunchinho in #2947
Documentation
Testing
- test(e2e): deflake egress policy probes by @EItanya in #3488
- test(secretmaterial): cover ownership checks and Secret write paths by @vedantlavale in #3451
Other Changes
- adk/models: support Gemini endpoint overrides and Actor JWT auth by @shashankram in #3458
- chore(deps): update google-adk[a2a] requirement from <3,>=2.12.0 to >=2.13.0,<3 in /python by @dependabot[bot] in #3478
- chore(deps): bump opentelemetry-instrumentation-grpc from 0.66b1 to 0.66b2 in /python by @dependabot[bot] in #3482
- chore(deps): bump google-genai from 2.33.0 to 2.34.0 in /python in the python-google-ai group across 1 directory by @dependabot[bot] in #3485
- chore(deps): bump opentelemetry-api from 1.45.1 to 1.45.2 in /python in the python-opentelemetry group across 1 directory by @dependabot[bot] in #3473
- chore(deps): update anthropic[vertex] requirement from >=2.2.0 to >=2.3.0 in /python by @dependabot[bot] in #3481
- api/models: update ModelProviderConfig discovery contract by @shashankram in #3494
- ci: scope GITHUB_TOKEN to read-only in image-scan and migration-immutability by @ayushgharat234 in #3492
- Update metadata docs by @Stevenjin8 in #3447
- ci: run image scans daily instead of on every push by @timflannagan in #3496
- chore(deps): bump the npm-minor-patch group in /ui with 8 updates by @dependabot[bot] in #3472
- chore(deps): update langsmith[otel] requirement from >=0.14.11 to >=0.14.16 in /python by @dependabot[bot] in #3480
- chore(deps): bump astral-sh/setup-uv from 10.3.0 to 10.3.3 in the actions group across 1 directory by @dependabot[bot] in #3347
- chore(deps): bump the python-minor-patch group across 1 directory with 5 updates by @dependabot[bot] in #3476
- chore(deps): bump the go-minor-patch group across 1 directory with 17 updates by @dependabot[bot] in #3474
- chore(deps): upgrade Substrate to v1.0.0-rc2 by @EItanya in #3520
New Contributors
- @xianshujun made their first contribution in #3438
- @ayushgharat234 made their first contribution in #3492
- @alan-bentley-pgh made their first contribution in #3495
Full Changelog: v1.0.0-rc1...v1.0.0-rc2
v0.10.5
What's Changed
Bug Fixes
- fix(deps): resolve CVEs in v0.10.x runtime images by @iplay88keys in #3522
Full Changelog: v0.10.4...v0.10.5
v1.0.0-rc1
What's Changed
Features
- feat(cli): improve the chat TUI rendering and input by @Charlesthebird in #3292
- feat(sandbox): adopt env guest service redesign by @thomasbarrett in #3148
- feat(outputschema): allow format, pattern and type lists, add opt-in outputSchemaStrict by @danielle-mustillo in #3284
- feat(auth): enforce owned-resource RBAC and scoped Substrate inventory by @supreme-gg-gg in #3299
- feat(adk): allow disabling ask_user through runtime defaults by @lexmass in #3298
- feat(auth): support human and machine principals by @EItanya in #3358
- feat(auth): add gateway Actor JWT credentials by @EItanya in #3359
- feat(api): resolve Agent metadata from scoped Actor tokens by @EItanya in #3362
- feat(controller): retry failed golden builds for Agents and SandboxTemplates by @danielle-mustillo in #3335
- feat(cli): export Helm installation with dry-run by @iplay88keys in #3432
Bug Fixes
- fix(substrate): scope Substrate reads and page tokens to the watched namespaces by @danielle-mustillo in #3261
- fix(session): expire abandoned input and auth waits by @adalundhe in #3254
- fix(ui): keep following a chat turn when its stream breaks by @garlicKim21 in #3198
- fix(a2a): deliver push notifications concurrently by @EItanya in #3366
- fix(build): set the version -X targets from the Go module path by @fiunchinho in #3376
- fix(codex): report the turn's error message by @fiunchinho in #3377
- fix(ui): show one loading state in the agent switcher by @vedantlavale in #3237
- fix: honor configured controller service account during install by @iplay88keys in #3406
- fix(ui): show consistent empty states for denied substrate inventory by @supreme-gg-gg in #3392
- fix(cli): preserve Substrate CLI access alongside controller grants by @iplay88keys in #3420
- fix: include image pull secrets in substrate worker pool service account by @jcopi in #3443
- fix(install): keep model credentials out of process arguments by @iplay88keys in #3446
- fix(api): remove unused Harness status and ADK fields by @EItanya in #3454
- fix(ci): enforce protobuf compatibility after pre-RC cleanup by @EItanya in #3455
Other Changes
- chore: fix stale issue close message by @timflannagan in #3308
- chore(helm): remove bundled grafana-mcp chart by @shaktisingh404 in #3294
- build(ui): serve the UI from distroless nginx with a Go entrypoint by @Charlesthebird in #3316
- chore(deps): update Substrate to v0.6.0 by @EItanya in #3325
- [Helm] Use full DNS name for kagent tools MCP server by @Stevenjin8 in #3334
- fix helm full DNS name tests by @Stevenjin8 in #3336
- chore(deps): upgrade Substrate to v0.7.0-alpha1 by @EItanya in #3338
- chore(deps): update setuptools requirement from >=84.0.0 to >=84.2.1 in /python by @dependabot[bot] in #3352
- build: Remove redundant Go module downloads by @timflannagan in #3346
- chore(deps): bump google-genai from 2.31.0 to 2.33.0 in /python in the python-google-ai group by @dependabot[bot] in #3349
- chore(deps): bump the python-minor-patch group in /python with 5 updates by @dependabot[bot] in #3351
- Add a helm configuration option for SandboxConfig ref by @jcopi in #3357
- chore(deps): update anthropic[vertex] requirement from >=1.15.0 to >=2.2.0 in /python by @dependabot[bot] in #3353
- chore(deps): bump the npm-minor-patch group in /ui with 5 updates by @dependabot[bot] in #3348
- build(ui): build the UI on node:24.22.1-alpine by @Charlesthebird in #3383
- build: decouple protobuf generation from builds by @timflannagan in #3381
- refactor(session)!: remove public suspend and resume controls by @EItanya in #3409
- refactor(cli): share chart name between rendering and installation by @iplay88keys in #3410
- core: support cross-namespace ModelConfig and RemoteMCPServer with allowedNamespaces by @shashankram in #3382
- refactor(cli): extract reusable installation library by @iplay88keys in #3427
- chore: remove generated env var docs and check by @timflannagan in #3434
- chore(deps): upgrade Substrate to v0.7.0-alpha2 by @EItanya in #3444
- refactor(api)!: make pre-RC API breaks for future machine principals by @EItanya in #3453
- chore: upgrade Substrate to v1.0.0-rc1 by @EItanya in #3457
New Contributors
- @shaktisingh404 made their first contribution in #3294
- @Stevenjin8 made their first contribution in #3334
- @lexmass made their first contribution in #3298
- @fiunchinho made their first contribution in #3376
- @chipfighter made their first contribution in #2998
Full Changelog: v1.0.0-alpha17...v1.0.0-rc1
v1.0.0-alpha17
What's Changed
Features
- feat: support gateway token passthrough for embedded controllers by @codyhartsook in #3263
- feat(auth): authenticate Substrate actor calls to the control plane by @EItanya in #3282
Bug Fixes
- fix(adk): enable default tools and simplify sandbox execution by @supreme-gg-gg in #3283
- fix(cli): uninstall everything kagent install creates by @iplay88keys in #3285
- fix(auth): enforce scoped authorization for Kubernetes-backed resources by @supreme-gg-gg in #3281
- fix(substrate): check existing atespaces before creating them by @spichen in #3260
- fix(docker): give the Go runtime user a writable HOME by @teemow in #3161
- fix(deps): bump Go to 1.27.3 for security fixes by @EItanya in #3304
Testing
- test(core): cover token threshold compaction through harnesses by @adalundhe in #3291
Other Changes
- ci: run migration immutability check on every PR so it can be required by @iplay88keys in #3293
Full Changelog: v1.0.0-alpha16...v1.0.0-alpha17
v0.10.4
This is an incomplete release. All necessary runtime artifacts are available, minus CLI. We plan to do a followup release.
What's Changed
Bug Fixes
- fix(controller): accept a RemoteMCPServer labeled kagent.dev/discovery=disabled without listing its tools (backport to release/v0.10.x) by @teemow in #2753
- fix(go): require patched certificate verification in v0.10.x by @jjamroga in #3310
Full Changelog: v0.10.3...v0.10.4
v1.0.0-alpha16
What's Changed
Features
- feat: Send PDF and Office files to Responses API models end-to-end by @danielle-mustillo in #3200
Other Changes
- chore(deps): update anthropic[vertex] requirement from >=1.13.0 to >=1.15.0 in /python by @dependabot[bot] in #3272
- chore(deps): bump astral-sh/setup-uv from 7.6.0 to 10.3.0 by @dependabot[bot] in #3266
- chore(deps): update google-adk[a2a] requirement from <3,>=2.11.0 to >=2.12.0,<3 in /python by @dependabot[bot] in #3273
- chore(deps): bump the go-minor-patch group across 1 directory with 6 updates by @dependabot[bot] in #3265
- chore(deps): bump the npm-minor-patch group across 1 directory with 10 updates by @dependabot[bot] in #3280
Full Changelog: v1.0.0-alpha15...v1.0.0-alpha16