Open-source project
inclusionAI/Avernet avatar
inclusionAI/Avernet

Avernet: a coordination layer for persistent multi-agent systems

Distributed agent coordination platform where agents live, connect, coordinate, execute, and evolve together.

555 stars59 forksPythonApache-2.0

At a glance

What is it?
Avernet is an Apache-2.0 Python infrastructure layer for running many agents together, not one at a time. Its public repo is honest about what is still partial, and that gap is what adopters should weigh first.
Who is it for?
Adopt Avernet if you already run several agents and need discovery, team formation and routing in one layer, and if you are comfortable that permissions, containers, clusters, context, memory and extensions are listed as partial, planned or in progress. Do not adopt it if you need a single-agent framework, if your deployment depends on the planned cluster support, or if audit and lifecycle management are procurement requirements today.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 17, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem Avernet targets: many agents, one organization

Most agent tooling is built around a single loop: one prompt, one model, one result. Avernet starts from the opposite assumption. Its README describes it as an infrastructure layer for building and operating persistent, coordinated, multi-agent systems at organizational scale, and the four bottlenecks it names are organizational rather than technical. Capabilities are hard to discover. Apparent consensus hides real misalignment. Execution depends on human relay. Knowledge does not accumulate as organizational capability. Those are problems that appear once you have more than a handful of agents and more than one team operating them. The intended user is therefore a platform or infrastructure team inside a larger organization, not an individual developer prototyping a chatbot. The README states that the project is production-tested at Ant Group and, as of early July 2026, supports multi-agent deployments across 12 business groups. That claim comes from the project itself and is not independently verifiable from the repository, so treat it as context for the design goals rather than as evidence about your own workload.

How the coordination layer is put together

The repository is a Python 3.12 workspace. The pyproject.toml names the project ocb, describes it as a multi-bot AI workbench and coordination service, and sets requires-python to ">=3.12,<3.13". The dependency list in that file is empty, which means the actual dependency resolution lives elsewhere, most likely in uv.lock and the docs/dependencies.md file the README points to. That is worth knowing before you plan a build: the top-level manifest tells you almost nothing about what will be installed.

The runtime shape is visible in docker-compose.yml. There is one service, teamclaw, built from Dockerfile.ocb with the image tag ocb:local. It exposes two ports: BCS_PORT, defaulting to 21000, and FRONTEND_PORT, defaulting to 8000. The frontend is pointed at the backend through FRONTEND_BCS_TARGET, which defaults to http://127.0.0.1:21000. Authentication in that compose file is mocked: BCS_AUTH_MOCK defaults to 1, with BCS_MOCK_USER_ID and BCS_MOCK_USER_NICK_NAME supplying a fake identity. Model credentials arrive either through OPENCLAW_OPENAI_BASE_URL, OPENCLAW_OPENAI_API_KEY and OPENCLAW_OPENAI_MODEL_ID, or through a host OpenClaw config directory mounted read-only at /host-openclaw. The .env.example spells out the same three-way choice for the interactive setup flow: mock for fixed-format replies from a local Mock Model Server, manual for real OPENCLAW_OPENAI_* values, or home to import model fields from ~/.openclaw/openclaw.json. If none of those is configured, the example file states that BCS, the frontend and onboard still start, but bots cannot produce real model replies.

Installing Avernet locally and getting a first run

The README gives a two-command local setup. The first command installs the tooling the scripts expect, and the second starts the stack. According to the README, the result is an Avernet process, a frontend workbench and 5 local test bots.

bash
git clone https://github.com/inclusionAI/Avernet.git
cd Avernet
./scripts/singlebox.sh install-tools
./scripts/singlebox.sh

The README states that the frontend is then reachable at http://127.0.0.1:8000/. If you would rather run it in Docker, the README points to docs/quick-start.md and docs/docker.md rather than repeating the steps inline, and the compose file expects a .env file for the port and model variables.

The interactive setup asks which model configuration mode to use. In an automated run you can skip the prompt by setting the mode explicitly, as the .env.example documents.

bash
# mock: fixed-format replies from the local Mock Model Server
SINGLEBOX_MODEL_CONFIG_MODE=mock ./scripts/singlebox.sh

For a first real use, the demo is the intended entry point. The README describes it as showing local onboarding and coordination flow, workbench interaction, integration of local test bots, and a reproducible starting point for public evaluation. It also states plainly that the demo does not fully demonstrate production-scale properties such as large-scale connection envelopes, permission isolation, audit depth, failure recovery, or long-horizon organizational collaboration. Read that sentence as the boundary of what a local run can tell you.

What the capability badges actually tell you

The README carries a status note and a legend, and it is unusually direct: available means usable in the public repo now, partial means partially public, in progress means being opened or integrated, planned means intended but not yet public. Applying that legend to the capability table changes the picture considerably. Identity and auth are marked available. Permissions are partial. Audit and lifecycle are in progress. Security is planned. Under execution infrastructure, heterogeneous runtimes and bot services are available, containers are partial, clusters are planned, and operations is in progress. The coordination network is the strongest area: discovery, relationships, team formation, routing and collaboration are all listed as available, while governance is planned. Shared intelligence is mixed. Orchestration, evaluation and evolution are available, with the README attributing evaluation, optimization and recoverable Pack versions to AgentEvolve in docs/agent-evolve.md, and workflow orchestration to TaskGuard in docs/taskguard.md. Context and memory, by contrast, are both planned. Application building blocks show canvas and workflow as available, with apps and extensions planned.

The honest reading is that Avernet is strongest where agents find each other and work together, and thinner where they are governed, isolated or remembered. Governance is planned, which sits awkwardly beside the organizational-scale framing. Context and memory being planned is the bigger surprise for anyone who associates persistent agents with accumulated state. The README does not explain how that gap is bridged internally.

Where Avernet is the wrong tool

If you are building one agent, Avernet is overhead. The install pulls a coordination service, a frontend workbench and a set of local test bots, and the value it claims comes from discovery, routing and team formation across multiple agents. With one agent there is nothing to route.

If your deployment depends on cluster support, the README lists clusters as planned. That is not a documentation gap you can work around by reading the source; it is a statement that the capability is not public. The same applies to security, which is listed as planned, and to context and memory. Teams that need governed execution with audit depth today should note that audit is in progress and governance is planned, and the demo section explicitly says the public demo does not demonstrate audit depth or permission isolation. The docker-compose.yml also defaults to mocked authentication with BCS_AUTH_MOCK set to 1, which is fine for evaluation and clearly not a production posture.

There is a second, quieter limitation. The README's status note says public open-source coverage varies by component and is being released incrementally. That means the public repository and the internal system described in the same README are not the same thing, and you should size your expectations against the badges rather than against the production paragraph above them.

Avernet compared with a general agent framework

The natural comparison is with general-purpose agent frameworks in Python, such as LangGraph or CrewAI. The difference is where the abstraction sits. Those projects give you primitives for defining an agent and composing a workflow inside your own process, and you supply the deployment, the identity and the transport. Avernet ships a service instead: a backend on BCS_PORT, a workbench on FRONTEND_PORT, a bot-as-a-service runtime, and a coordination network that handles discovery, relationships, team formation, routing and collaboration. You are adopting an operating environment rather than a library.

That trade is real in both directions. A framework lets you embed agents in an existing application and keep full control of authentication and storage. Avernet asks you to run its stack, and in return it takes responsibility for how agents find each other and form teams. If your problem is coordination across runtimes and bot platforms, the framework route means building discovery and routing yourself. If your problem is a single well-defined pipeline, Avernet's coordination layer is weight you will not use. The repository layout supports this reading: docker-compose.yml, Dockerfile.ocb, a scripts directory and a docs directory sit at the top level alongside src, which is the shape of a deployable service rather than an importable package.

Maintenance cadence, licensing and upgrade cost

The repository is not archived and the last push was on 2026-09-17. Releases are dated rather than semantic: v2026.07.28, v2026.07.30 and v2026.08.04, published between 2026-07-29 and 2026-08-05. That is a date-versioned release train, which usually means upgrades are frequent and small rather than rare and breaking, but the README does not document a deprecation policy, a support window or a rollback procedure for a failed upgrade. The README also does not describe how to roll back a singlebox or Docker deployment. Plan for that gap if you pin versions in production.

The licence is Apache-2.0, declared both in the LICENSE file and in pyproject.toml as a text licence field. Apache-2.0 permits commercial use and modification and includes an explicit patent grant, which is generally the permissive end of the spectrum for an infrastructure dependency. It also means you carry the obligation to retain notices and to state significant changes if you redistribute. That is a description of the licence text, not legal advice; if your organization has a review process for infrastructure dependencies, route it there.

The upgrade cost that is visible from the repository is the dependency surface. The top-level pyproject.toml declares no dependencies and sets tool.uv.package to false, so the real constraints live in uv.lock and docs/dependencies.md. Any upgrade plan should start by diffing uv.lock between two release tags rather than by reading the version number.

Editorial conclusion

Adopt Avernet if you already run several agents and need discovery, team formation and routing in one layer, and if you are comfortable that permissions, containers, clusters, context, memory and extensions are listed as partial, planned or in progress. Do not adopt it if you need a single-agent framework, if your deployment depends on the planned cluster support, or if audit and lifecycle management are procurement requirements today. Before committing, read docs/quick-start.md and docs/dependencies.md, run ./scripts/singlebox.sh install-tools, then check the capability badges in the README against the components you actually intend to ship.

Frequently asked questions

What is Avernet and who is it for?

Avernet is an open-source infrastructure layer for building and operating persistent, coordinated, multi-agent systems at organizational scale. The README targets teams that need to run multiple agents together, connect heterogeneous runtimes and bot platforms, and operate human-agent collaboration in real environments. If you are building a single agent, the coordination layer is overhead you will not use.

How do I install Avernet locally?

Clone the repository and run ./scripts/singlebox.sh install-tools followed by ./scripts/singlebox.sh. The README states this starts an Avernet process, a frontend workbench and 5 local test bots, with the frontend at http://127.0.0.1:8000/. Docker and other setup options are covered in docs/quick-start.md and docs/docker.md.

Does Avernet work without a real model API key?

Yes, for evaluation. The .env.example offers a mock mode that uses fixed-format replies from a local Mock Model Server, and it states that if no model configuration is available, BCS, the frontend and onboard still start but bots cannot produce real model replies. Real replies require either the OPENCLAW_OPENAI_* variables or a host OpenClaw config at ${OPENCLAW_HOST_CONFIG_DIR}/openclaw.json.

Which Avernet capabilities are not yet public?

According to the README capability table, security, clusters, governance, context, memory, apps and extensions are marked planned, while permissions and containers are partial and audit, lifecycle and operations are in progress. Identity, auth, heterogeneous runtimes, bot services, discovery, relationships, team formation, routing, collaboration, orchestration, evaluation, evolution, canvas and workflow are marked available.

What licence does Avernet use?

Apache-2.0. It is declared in the LICENSE file and in pyproject.toml as license = { text = "Apache-2.0" }. That is a permissive licence with an explicit patent grant, but it is not legal advice and your own review process should confirm it fits.

Official sources

  1. inclusionAI/Avernet on GitHub
  2. Issues
  3. License: Apache-2.0
  4. README
  5. Releases
Community notes

Community notes