Skip to content

Avernet v2026.07.28

Choose a tag to compare

@totalfrank totalfrank released this 29 Jul 07:56

Avernet v2026.07.28

Release branch: REL20260728 · previous release: v2026.07.15

Overview

Avernet v2026.07.28 is the second open-source release of Avernet, the open
infrastructure for agent organizations and open agent ecosystems.

This release grows the platform along three lines: a config-driven external
API gateway
that gives third-party developers a stable public surface, a
shared session workspace so humans and bots can collaborate over the same
files inside a session, and an engine-agnostic Skills Pool that migrates,
rolls out, and recovers bot skill layouts across OpenClaw, Claude Code,
AICoding, and Hermes runtimes. Alongside those, service-bot publishing became
markedly more reliable under container churn.

Releases follow the vYYYY.MM.DD CalVer scheme.

Highlights

  • Gateway v1 external API — config-driven, domain-transparent forwarding with
    a Forwarder/SchemaCatalog SPI, user-principal auth strategy and route-security
    config, and a generated, backward-compatibility-checked OpenAPI document served
    for the /openapi/v1/bots groups (bots, channels, skills, identity, resources,
    MCP, routines).
  • Session workspace — shared per-session files with pluggable storage and CLI
    support, access gated on session participants, system messages on upload
    completion, and a v2 session filesystem.
  • Human-in-the-loop collaboration — humans auto-join session chat and emit
    join events, human-input state machine nodes are supported in workflows, and
    custom collaboration workflows ship with frontend YAML validation and role
    checks.
  • Skills Pool (P3) — layout claim gating, complete OpenClaw filesystem
    migration, per-engine migrations for Claude Code / AICoding / Hermes, lifecycle
    reconciliation, quarantine management, recovery and rollback, owner-scoped
    rollout operations, and a safe cutover finalization path.
  • Service bot publish reliability — superseded online bots are retired so
    publishes no longer leave orphan or duplicate BaaS bots, the teclaw passport
    token is delivered only after the container actually starts (retryable and
    idempotent), and bots stuck in pending can be recovered.
  • Bot coordination — group listing for the authenticated actor, discovery
    that excludes the requester, channel bindings scoped by environment, channel
    source message id propagation, unified provider callback timeouts, and
    stricter bot credential validation.
  • Docs and developer experience — the WAIC live demo tutorial, gateway CI
    coverage checks, and a pre-push hook that is lint-only by default instead of
    running full CI.

Getting Started

See the documentation for installation and local setup:

Known Limitations

Prebuilt container images are still not published, so the Docker workflow builds
from source. The Gateway v1 external API and the Skills Pool migration are
rolling out progressively — their configuration surfaces may still change in a
following release. Installation flows, integration protocols, and deployment
options will continue to evolve.

Please report problems through GitHub Issues.

Feedback and Contributions

We welcome bug reports, feature requests, documentation improvements, and code
contributions from the community.

What's Changed

View the complete list of merged pull requests
  • feat(bcs): list groups for authenticated actor by @vzvince in #352
  • Gateway v1 API — Group B: user-principal auth strategy, route-security config + bots sample by @totalfrank in #359
  • fix(bcs): scope channel bindings by environment by @RaymondHX in #362
  • feat(bcs): auto-join humans for session chat by @RaymondHX in #364
  • fix(bcs): expose async judge progress and cover provider timeout by @zh-bupt in #384
  • fix: avoid reusing incomplete singlebox bot sessions by @FreddieSun in #354
  • fix(bcs): reject invalid explicit bot credentials by @vzvince in #365
  • fix(bcs-cli): restore discover JSON output by @vzvince in #380
  • fix(bcs): unify provider callback timeout by @vzvince in #386
  • fix(backend): preserve per-bot notify probe failures — Refs ocb#9 by @maicaisongxiaocong in #388
  • feat(bcs): complete custom collaboration workflow by @zh-bupt in #385
  • [Skills Pool P3] OpenClaw 暗准备 Pool 并支持运行时探测 by @FreddieSun in #392
  • feat: add skills pool layout claim gate by @FreddieSun in #367
  • Gateway v1 API — remaining groups: channels, skills, identity, resources, mcp, routines by @totalfrank in #389
  • feat(bcs): session workspace — shared per-session files, pluggable storage, CLI by @zh-bupt in #343
  • fix(harness): raise LLM call success rate for diagnostics and patch g… by @pddbend in #402
  • feat: activate OpenClaw skills pool migration by @FreddieSun in #369
  • fix(baas): preserve configured engine venv symlink by @FreddieSun in #408
  • feat: migrate complete OpenClaw filesystem truth by @FreddieSun in #370
  • fix(bcs): emit human join event for session chat by @RaymondHX in #403
  • fix(baas): convert aicoding command output by @vzvince in #407
  • fix(bcn): emit empty final for tool-only runs by @RaymondHX in #296
  • docs: complete WAIC demo tutorial docs by @ziminz19 in #337
  • feat: wire skills pool lifecycle reconciliation by @FreddieSun in #410
  • feat: add Claude Code skills pool migration by @FreddieSun in #411
  • fix(bcs): avoid single upload multipart misclassification by @FreddieSun in #412
  • feat: add AICoding skills pool migration by @FreddieSun in #414
  • Rel20260723 to dev by @quhongwei in #413
  • feat(backend)botchat统一接口+开放api by @3h-william in #366
  • test(gateway): add ci coverage check by @cassiuscai in #406
  • feat: add Hermes skills pool migration by @FreddieSun in #415
  • chore(baas): Revert code change for device_template_router.py by @cassiuscai in #424
  • fix(bcs): exclude requester from discovery by @vzvince in #400
  • fix(bcs): gate session-file access on session participants and relax share authz by @zh-bupt in #423
  • fix(health_check): 调整沙盒设备告警处理逻辑 by @WZhutian in #422
  • fix(baas): bind singlebox gateways to loopback by @FreddieSun in #427
  • fix(bcs): allow bot owner to remove their bot from a session by @zh-bupt in #426
  • feat(frontend): improve custom collaboration YAML validation and role… by @quechao76 in #425
  • fix(baas): do not return 503 when device not available by @cassiuscai in #429
  • fix(bcs): allow driver bot and its owner to delete a session by @zh-bupt in #433
  • feat(bcs): propagate channel source message ids by @RaymondHX in #432
  • feat(bcs): support human input state machine nodes by @RaymondHX in #421
  • feat: freeze service bot skills layout artifact by @FreddieSun in #375
  • fix(baas): prevent SQLAlchemy isce error from concurrent orm_session calls in distributed lock renew thread by @cassiuscai in #441
  • feat: add Skills Pool recovery and rollback by @FreddieSun in #417
  • feat: manage skills pool migration quarantine by @FreddieSun in #418
  • feat: add Skills Pool rollout operations by @FreddieSun in #447
  • fix(service-bot): retire superseded online bot to stop orphan/duplicate BaaS bots by @totalfrank in #512
  • Config-driven gateway forwarding by @totalfrank in #420
  • fix: release pool claim for incapable runtimes by @FreddieSun in #451
  • Remove the retired ac_file table and its dead call graph by @totalfrank in #454
  • Make pre-push lint-only by default instead of full CI by @totalfrank in #450
  • feat(bcs): fire system message on session file upload complete by @zh-bupt in #445
  • add relay ws_url by @liaoxianhao in #462
  • fix lock by @xxxxpenny in #460
  • feat: safely finalize Skills Pool cutover by @FreddieSun in #459
  • fix(backend): recover bots stuck in pending by @XIEAN99 in #468
  • fix: domain-bots remove auth and remove iam_token (cherry-pick #442 to REL20260728) by @chendsy in #472
  • Bugfix/fix error status by @xxxxpenny in #466
  • fix: backport legacy skills pool rollout CAS to REL20260728 by @FreddieSun in #479
  • feat(mcp): add app info to claude code defaults by @CapQing in #477
  • fix auth on api resources url and node by @liaoxianhao in #484
  • fix lock by @xxxxpenny in #489
  • fix: promote Skills Pool cutover recovery to REL20260728 by @FreddieSun in #496
  • Session fs v2 by @pfmiles in #486
  • fix: route Pool-active skill CRUD to canonical paths by @FreddieSun in #500
  • feat(mcp): show real names for claude_code default MCPs by @CapQing in #504
  • fix(community): route notify probe by device_provider (BaaS ENGINE_HTTP_500) by @maicaisongxiaocong in #508
  • remove packages by @xxxxpenny in #505
  • fix: harden multi-engine Skills Pool runtime by @FreddieSun in #502
  • fix(baas): use gmt_modified instead of gmt_create for publish timeout baseline by @cassiuscai in #513
  • feat(bot_run): treat agent final event as session termination by @xxxxpenny in #518
  • Oss endpoint div by @pfmiles in #520
  • fix: serialize BaaS bootstrap with container init by @FreddieSun in #519
  • fix(teclaw): deliver the passport token after the container actually starts by @totalfrank in #527
  • revert: restore historical BaaS bootstrap behavior by @FreddieSun in #533

New Contributors

Full Changelog: v2026.07.15...v2026.07.28