What's Changed
Features
- 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
- feat(ui): delete a checkpoint from the chat, beside Fork by @Charlesthebird in #2804
- feat(helm): add a ServiceMonitor for the controller metrics endpoint by @younsl in #2401
- feat(core): add scoped authorization for catalog resources by @codyhartsook in #2710
- feat(observability): add OTEL traces and logs to harnesses by @supreme-gg-gg in #2805
- feat(api): page, sort and search the substrate reads server-side by @toreysoloio in #2771
- feat(ui): name snapshots, and put fork, rename and delete on their mark by @Charlesthebird in #2847
Bug Fixes
- fix(go-adk): add per-call session isolation for Agent tools by @yashrajshuklaaa in #2153
- fix: point currency sample at the new Frankfurter API endpoint by @shreyasskasetty in #2370
- fix(controller): wire up SessionSharesHandler in NewHandlers by @onematchfox in #2363
- fix(ui): stop rendering the model's thought signature in the answer by @garlicKim21 in #2355
- fix(ui): make the system theme reachable from the theme control by @garlicKim21 in #2352
- fix(ui): stop breaking words mid-word in chat messages by @garlicKim21 in #2351
- fix(otel): stop sending traces to api.openai.com and cleanup by @krisztianfekete in #2400
- fix(ToolsSection): resolve duplicate key issue in tool rendering by incorporating index in keys by @entee28 in #2419
- fix(ui): adjust header container max-width to prevent sidebar overlap by @AyushKumar123456789 in #2435
- fix: ensure API key passthrough works for OpenAI embedding models by @onematchfox in #2457
- fix(kagent-adk): surface the sub-agent's ask_user question in remote_hitl_hint by @vramahandry in #2495
- fix: reclaim the AgentInstance task slot after an interrupted turn by @QuentinBisson in #2490
- fix(agentplugins): reject unsafe and conflicting skill selections by @Whxuan0701 in #2505
- fix: avoid starting actors during instance creation by @EItanya in #2552
- fix(build): pin kube-api-linter plugin to the workspace Go toolchain by @sbx0r in #2535
- fix: persist HITL tasks across actor suspension by @EItanya in #2567
- fix: archive a parked question before its reply by @Charlesthebird in #2616
- fix: preserve A2A transcript order with metadata by @EItanya in #2621
- fix(controller): restore services and RemoteMCPServer discovery for controller-v2 by @supreme-gg-gg in #2639
- fix(controller): restore reconciler for MCPServer in controller-v2 by @supreme-gg-gg in #2644
- fix(otel): restore distributed tracing for the controller and agent runtimes by @codyhartsook in #2663
- fix: restore ate-api ActorTemplate metadata by @EItanya in #2664
- fix: wire runtime revisions into substrate inventory by @EItanya in #2703
- fix(ui): preserve post-login redirect target through
oauth2-proxysign-in by @onematchfox in #2533 - fix(go-adk): surface the sub-agent's ask_user question in RemoteHitlHint by @vramahandry in #2475
- fix: migrate checkpoints to Substrate v0.0.26 by @EItanya in #2738
- fix(adk): keep Ollama tool property order stable across requests by @garlicKim21 in #2693
- fix: preserve conversation identity and history across forks by @EItanya in #2754
- fix: generalize database conflict errors by @EItanya in #2780
- fix(ui): keep the transcript pinned while it settles, and wait for the app to boot by @Charlesthebird in #2776
- fix: trace outbound A2A gateway calls by @yashrajshuklaaa in #2779
- fix(helm): merge podLabels into bundled Postgres pod template by @jrhuerta in #2749
- fix: safely collect runtime revisions in a leader-elected runnable by @EItanya in #2742
- fix(ui): decide the agent rail's active state by route, not by id or exact path by @Charlesthebird in #2778
- fix(adk): map cached and reasoning tokens in Responses usage by @joao-dantas in #2766
- fix: make A2A task admission atomic by @EItanya in #2792
- fix(helm): use kagent-tools namespace in URL by @shubhamojha1 in #2797
- fix(helm): disable controller metrics when bindAddress is empty or 0 by @Gous0786 in #2785
- fix(adk): export a turn's spans before its terminal event leaves the process by @dhaifley in #2786
- fix(adk): propagate trace context on outbound LLM and MCP HTTP calls by @TigerkidYang in #2809
- fix: discover Kubernetes issuer for kubectl-ate by @yashrajshuklaaa in #2770
- fix(adk): allow a keyless OpenAI-compatible baseUrl by @QuentinBisson in #2739
- fix(ui): ten fixes in the agent rail and the schedules empty state by @Charlesthebird in #2820
- fix(harness): reload continuation state after Substrate restore by @supreme-gg-gg in #2823
- fix(mcp): reject missing task input responses by @EItanya in #2816
- fix: provision actor egress policies with Substrate v0.0.30 by @EItanya in #2839
- fix(ui): keep long-running agent streams open and expose MCP requireApproval by @supreme-gg-gg in #2826
- fix(ui): let a remote MCP server save, and the fixes around it by @Charlesthebird in #2840
- perf: speed up runtime preparation and E2E CI by @EItanya in #2844
- fix(python): retain zero JWT expiry for AgentSTS cache by @tryambak2019 in #2833
- fix: skills-init checkout passes SHA as revision, not pathspec (#2608) by @boxcee-interview in #2720
- fix(ui): work over plain http, and catch render crashes at the boundaries by @Charlesthebird in #2865
- fix: use Substrate beta4 gateway credential injection by @EItanya in #2868
Documentation
- docs: require atomic state transitions by @EItanya in #2617
- docs: refresh architecture documentation by @EItanya in #2690
Testing
- test: add AgentInstance interaction e2e by @EItanya in #2514
- test: expand AgentInstance A2A end-to-end coverage by @EItanya in #2518
- test(ui): fix three flaky browser-suite waits by @Charlesthebird in #2612
- test: parallelize substrate e2e suite by @EItanya in #2661
- test(ui): one lifecycle journey per resource, and bugs fixes found during rewrite by @toreysoloio in #2825
Other Changes
- ci: scan images on release branches by @iplay88keys in #2361
- Resolve prerelease upgrade targets by @iplay88keys in #2367
- chore(deps): bump the go-minor-patch group in /go with 11 updates by @dependabot[bot] in #2381
- chore(deps): bump actions/stale from 10 to 11 by @dependabot[bot] in #2383
- ci: always run the UI Playwright suite by @Charlesthebird in #2387
- chore(deps): bump the npm-minor-patch group in /ui with 15 updates by @dependabot[bot] in #2380
- Azure foundry backend by @marosset in #2091
- Bump python packages to resolve cves by @iplay88keys in #2394
- chore(deps): bump node from
2d49d87to9e6f935in /python by @dependabot[bot] in #2379 - A2A: Migrate to v1.0 across all integration surfaces by @supreme-gg-gg in #2354
- A2A: Various usage cleanups in Kagent harness by @supreme-gg-gg in #2385
- A2A: Standardize Kagent's human in the loop with A2A Extension by @supreme-gg-gg in #2396
- chore(deps): bump google-genai from 2.12.1 to 2.17.0 in /python in the python-google-ai group across 1 directory by @dependabot[bot] in #2414
- chore(deps): bump node from
9e6f935tocd56571in /python by @dependabot[bot] in #2413 - chore(deps): bump debian from
020c0d2to3a39a05in /python by @dependabot[bot] in #2412 - refactor: remove deployment-backed agent API by @EItanya in #2422
- move from the rest to grpc (backend and UI, A2A stays as is) by @peterj in #2362
- Bump sqlparse to 0.6.0 to address CVEs by @iplay88keys in #2479
- chore(security): resolve dependency-related CVEs by @inFocus7 in #2423
- bump retired gemini 2.0 default models to 2.5 by @PetrMc in #2433
- refactor: simplify runtime images and add lifecycle e2e by @EItanya in #2498
- Honor LOG_LEVEL in Go ADK runtime by @iplay88keys in #2510
- chore(deps): bump the npm-minor-patch group in /ui with 24 updates by @dependabot[bot] in #2524
- chore(deps): bump the python-google-ai group in /python with 2 updates by @dependabot[bot] in #2525
- Remove bundled
doc2vecby @inFocus7 in #2539 - ci: disable the testcontainers reaper in go-unit-tests by @jjamroga in #2554
- chore: remove legacy ACP and controller runtime by @EItanya in #2565
- refactor: remove local HITL task store by @EItanya in #2572
- refactor: remove legacy controller runtime by @EItanya in #2595
- refactor: move substrate runtime into v2 by @EItanya in #2596
- refactor: remove legacy session and task services by @EItanya in #2598
- refactor(ui): rename the extension framework to App Extensions and install an ordered array by @Charlesthebird in #2601
- chore: cleanup session paths from UI by @supreme-gg-gg in #2607
- refactor: type AgentInstance identifiers as UUIDs by @EItanya in #2562
- refactor(cli): simplify command composition by @codyhartsook in #2606
- chore(deps): bump the python-google-ai group in /python with 2 updates by @dependabot[bot] in #2632
- Bump postgres default to
18.6-alpine3.23by @inFocus7 in #2637 - chore(deps): bump actions/cache from 4 to 6 by @dependabot[bot] in #2630
- chore(helm): remove dead A2A_BASE_URL config by @Charlesthebird in #2656
- refactor: compile v2 resources from KRT collections by @EItanya in #2660
- .github/workflows: Migrate workflows to Blacksmith runners by @blacksmith-sh[bot] in #2659
- remove unused actions by @EItanya in #2665
- chore: update substrate to v0.0.23 by @EItanya in #2678
- chore: update substrate to v0.0.24 by @EItanya in #2681
- helm: derive the substrate endpoints when substrate is a subchart by @jjamroga in #2684
- refactor: remove unused legacy services by @EItanya in #2685
- refactor: remove remaining legacy agent APIs by @EItanya in #2686
- refactor: reorganize Go packages by @EItanya in #2694
- refactor: remove legacy framework persistence by @EItanya in #2695
- refactor: remove obsolete APIs and clients by @EItanya in #2696
- chore: update substrate to v0.0.25 by @EItanya in #2697
- Switch to using goose for migrations by @iplay88keys in #2667
- refactor: standardize Go logging on slog by @EItanya in #2705
- [UI] Prompts edit support added and form polished by @toreysoloio in #2668
- UI rework polish by @toreysoloio in #2666
- refactor: unify controller endpoints by @EItanya in #2699
- chore(deps): bump useblacksmith/setup-docker-builder from 1 to 2 by @dependabot[bot] in #2723
- chore(deps): bump helm/kind-action from 1.14.0 to 1.15.0 in the actions group by @dependabot[bot] in #2722
- chore(deps): bump google-genai from 2.20.0 to 2.22.0 in /python in the python-google-ai group by @dependabot[bot] in #2725
- ci: support merge queues by @Charlesthebird in #2711
- refactor: remove namespace scoping from database objects by @EItanya in #2730
- refactor: persist canonical protobuf objects as binary payloads by @EItanya in #2735
- chore(deps): bump the npm-minor-patch group across 1 directory with 18 updates by @dependabot[bot] in #2641
- refactor: replace sqlc with inline pgx SQL by @EItanya in #2769
- refactor: simplify database client operations by @EItanya in #2774
- ci: create the buildx builder before the e2e builds race for it by @Charlesthebird in #2782
- Use
apk upgradeon harness images by @inFocus7 in #2756 - chore: upgrade Substrate to v0.0.29 by @EItanya in #2802
- chore(deps): bump the npm-minor-patch group in /ui with 13 updates by @dependabot[bot] in #2813
- chore(deps): bump the python-google-ai group in /python with 2 updates by @dependabot[bot] in #2814
- chore(helm): Pin grafana-mcp image by @kaizakin in #2810
- remove v1 egress code by @EItanya in #2801
- ci: add nightly releases with shared publishing actions by @EItanya in #2841
New Contributors
- @marosset made their first contribution in #2091
- @garlicKim21 made their first contribution in #2355
- @entee28 made their first contribution in #2419
- @AyushKumar123456789 made their first contribution in #2435
- @PetrMc made their first contribution in #2433
- @vramahandry made their first contribution in #2495
- @Whxuan0701 made their first contribution in #2504
- @wattmto made their first contribution in #2418
- @CarlosLanderas made their first contribution in #2553
- @codyhartsook made their first contribution in #2559
- @blacksmith-sh[bot] made their first contribution in #2659
- @toreysoloio made their first contribution in #2668
- @jrhuerta made their first contribution in #2749
- @joao-dantas made their first contribution in #2766
- @shubhamojha1 made their first contribution in #2797
- @Gous0786 made their first contribution in #2785
- @kaizakin made their first contribution in #2810
- @darshan-shanthveer-patil made their first contribution in #2807
- @TigerkidYang made their first contribution in #2809
- @tryambak2019 made their first contribution in #2833
- @boxcee-interview made their first contribution in #2720
Full Changelog: v0.10.0-rc1...v1.0.0-alpha1