AgentsMesh: a self-hosted control layer for running many AI coding agents
The AI Agent Workforce Platform. Run a hundred AI coding agents across your own machines — schedule, isolate, and steer them all from one console.
At a glance
- What is it?
- AgentsMesh schedules AI coding agents onto self-hosted runners, gives each one an isolated Git worktree, and exposes the whole fleet through one console. It is aimed at operators who have outgrown a single terminal, and the Runner is where adoption starts.
- Who is it for?
- Adopt AgentsMesh if one person on your team is already juggling several coding agents and you want scheduling, worktree isolation and terminal streaming in a single console, with runners on machines you control. Do not adopt it if you need a permissively licensed component you can fork and redistribute: the README badge says BSL-1.1 while the repository metadata reports NOASSERTION, and the LICENSE file is the only text that decides.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 8 days ago.
- What is it written in?
- Mainly Go, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 1, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The wall AgentsMesh is built against
The README states the problem directly: individual engineers got productive with coding agents, but individual productivity has a ceiling. The pitch is that the next step is running many agents at once and directing them like a team. Four obstacles are named. A hundred agents will not fit on one laptop. Nobody can babysit a hundred terminals. Each agent needs a clean, isolated workspace or they corrupt each other's state. Long-running agents stall and silently die.
The intended user is an operator, not a model researcher. Someone who already runs claude-code, codex-cli, aider or gemini-cli by hand, and now wants scheduling, isolation and a shared view instead of a wall of terminal tabs. The topics list on the repository names those tools explicitly, so the project positions itself as a layer above existing CLIs rather than a replacement agent.
That framing matters for evaluation. AgentsMesh does not claim to make any single agent smarter. It claims to make many of them manageable. If your bottleneck is model quality, this is the wrong layer to buy.
Control plane, data plane, and why PTY bytes never touch the backend
The architecture section draws a split that is worth understanding before you install anything. Orchestration commands travel over gRPC with mTLS. Terminal I/O streams through a stateless Relay cluster over WebSocket. The README states the backend never touches a single PTY byte, and that this is what lets the fleet scale.
The server side is Go. The Backend is an API server built on Gin and GORM, handling auth, org/team/user management, pod lifecycle, tickets, billing, and the PKI that issues runner certificates. The Relay is a WebSocket pub/sub layer for terminal traffic. The Runner is a self-hosted daemon that connects to the backend over gRPC with mTLS and spawns isolated PTY pods that run the actual agents.
The core object is the AgentPod: a PTY terminal, a Git worktree sandbox, and a real-time output stream. The workspace is per-pod, described as an isolated Git worktree plus private credentials, with the path given in the README as sandboxes/{pod}/workspace/. That path is the concrete answer to the state-corruption problem: concurrent agents get separate worktrees and separate branches, so two agents editing the same repository do not write over each other.
Scheduling is capacity-driven. Each runner advertises max_concurrent_pods, and pods are scheduled onto a runner you pick or an available one from the pool. The README does not document what happens when every runner in the pool is at capacity, which is a gap worth noting for anyone planning around hard deadlines.
On the client side, a Rust core holds business logic as ten crates, compiled to WASM for web and desktop and to a native dylib via UniFFI for iOS. The web console is Next.js, the desktop app is Electron reusing the web UI over NAPI, and iOS is SwiftUI with TCA. One cache and one set of services across clients is the stated goal.
Installing a Runner and putting one agent under management
The README points to the hosted service at agentsmesh.ai as the fastest path: sign up, connect your Git provider, then install a Runner on each machine you want in the fleet. It states that AI API keys are bring-your-own, so there are no usage caps imposed by the platform and cost control sits with you.
The install step is a single shell command from the project's own domain. It is a piped-to-shell install, so read the script before running it on a machine that holds credentials.
curl -fsSL https://agentsmesh.ai/install.sh | shAfter that, the README says to see the Runner README for the next steps; the excerpted text cuts off there, so the exact registration command and configuration keys are not documented in the README. What can be said is that the Runner connects to the backend over gRPC with mTLS, and that the backend issues runner certificates through its PKI component. Expect the registration flow to involve a certificate or token issued from the console side, because that is how the architecture describes runner identity.
Once a runner is connected, it advertises capacity through max_concurrent_pods and pods schedule onto it. A first real use is one pod running one agent on one repository: you get a PTY terminal, a worktree under sandboxes/{pod}/workspace/, and a stream of output in the console. The second pod is where the design starts paying off, because it gets its own worktree and its own branch rather than sharing the first one's checkout.
One operational note from the repository layout: the project builds with Bazel. Top-level entries include BUILD.bazel, MODULE.bazel, WORKSPACE.bazel and .bazelversion, and package.json describes first-party @agentsmesh/* packages as managed entirely by Bazel via the internal_npm_package macro. Building from source is therefore a Bazel exercise, not a plain go build or pnpm install. The install script exists precisely so that you do not have to do that.
Autopilot, Mesh and the parts that are harder to verify
Two features go beyond scheduling. Autopilot is described as a control agent that watches a pod and sends the next instruction the moment it goes idle, with iteration caps, decision history, and human takeover and handback. That is the answer to agents that stall: instead of a human noticing a dead terminal, a control agent feeds the next step until a cap is hit or a person intervenes.
Mesh and Channels are the collaboration layer. Pods are bound into a topology and communicate over channels with @mentions, with the topology updating in real time in the console. The README's claim is that agents working in isolation never compound into a team, and this is the mechanism meant to change that.
Both features are described at the level of what they do, not how they decide. The README does not document how the Autopilot control agent chooses the next instruction, what happens when its decisions conflict with a human's, or what an iteration cap defaults to. Decision history and human takeover are named, which is reassuring as a design direction, but an operator who needs to predict behaviour under load will have to read the docs site rather than the README.
The same applies to failure modes. The README lists what breaks at scale in general terms, and the architecture explains why the backend is not the bottleneck, but there is no documented rollback procedure, no stated behaviour when a runner disconnects mid-pod, and no recovery path described for a pod whose worktree is left in a bad state. Isolation makes collisions unlikely; it does not by itself make a crashed run resumable.
Where AgentsMesh is the wrong tool
If you run one agent at a time on one repository, AgentsMesh adds a backend, a relay, a runner daemon and a certificate exchange to solve a problem you do not have. The console is a genuine benefit only once the number of concurrent pods exceeds what you can hold in your head.
The self-hosted claim needs reading carefully. Runners run on your machines and the README says your code never leaves your infrastructure, which is true of the agent execution path. But the README's own quick start routes through the hosted service at agentsmesh.ai for signup, Git provider connection and the console. The repository contains a deploy/ directory and the backend is a Go service with its own migrations, so a fully self-hosted deployment appears to be the shape of the codebase, but the README does not document a self-hosted control plane setup. If your constraint is that no orchestration metadata may leave your network, verify that path before assuming it exists.
The licence is the other boundary. The README badge reads BSL-1.1, while the repository metadata reports NOASSERTION. Those are not the same answer, and the LICENSE file is the one that governs. Anyone planning to embed, redistribute or offer this as a service needs to read it rather than the badge.
Finally, the release channel is unusual. Recent releases include v0.44.8-nightly.20260803 and v0.44.8-nightly.20260801 alongside a tagged v0.44.7. The nightly line is published frequently, which suggests active work, but nightlies are nightlies. Pick the tagged release unless you have a specific reason not to.
How it differs from a terminal multiplexer or a hosted agent runner
The closest mental model for many engineers is a terminal multiplexer such as tmux or a cmux-style tool: you get panes, you get persistence, you get many shells in one window. The difference is that a multiplexer has no concept of a pod, no scheduler, and no worktree isolation. Every pane shares the same filesystem, so two agents in two panes of the same repository will collide. AgentsMesh gives each pod its own worktree under sandboxes/{pod}/workspace/ and its own branch, and schedules pods onto runners by advertised capacity. A multiplexer keeps sessions alive; AgentsMesh keeps agents separated and assigns them to machines.
The other comparison is hosted agent platforms that run your agents on the vendor's infrastructure. AgentsMesh inverts that: the control and terminal layers are centralized, but the execution happens on runners you install, and you supply your own model API keys. That is a real difference in where the code and the credentials sit, and it is the reason the project describes itself as self-hosted. The trade-off is operational: you own the machines, the runner upgrades, and the capacity planning that max_concurrent_pods implies.
Against a single-agent CLI wrapper, the difference is scope. A wrapper makes one agent easier to invoke. AgentsMesh assumes the agents already exist and builds scheduling, isolation, liveness and collaboration around them.
Maintenance, upgrades and licence before you commit
The repository is not archived, and the last push was on 2026-08-03. That is recent enough that the project is clearly being worked on, and the nightly release cadence around the same date supports that. The tagged line sits at v0.44.7 from 2026-07-25, with nightlies carrying the v0.44.8 prefix. For a platform that runs a daemon on every machine in your fleet, that cadence is the upgrade cost: runners need updating across hosts, and the backend, relay and runner versions have to stay compatible with each other. The README does not document a compatibility matrix between runner and backend versions, so pinning both to the same tagged release is the conservative approach.
The Go module path in go.mod is github.com/anthropics/agentsmesh, which does not match the AgentsMesh/AgentsMesh repository path. That is worth knowing if you intend to import the module or vendor it, because the path you would write is not the one the repository URL suggests. It may be a historical artifact; the README does not explain it.
On licensing, the README badge says BSL-1.1, which is a source-available licence with usage restrictions that vary by version, and the repository metadata reports NOASSERTION, meaning the tooling could not classify the LICENSE file automatically. Those two signals disagree, and neither is a substitute for the file itself. If your organisation has a policy against source-available licences, or if you intend to redistribute the runner, read LICENSE and NOTICE before you install anything. This is a description of what the repository says, not legal advice.
Editorial conclusion
Adopt AgentsMesh if one person on your team is already juggling several coding agents and you want scheduling, worktree isolation and terminal streaming in a single console, with runners on machines you control. Do not adopt it if you need a permissively licensed component you can fork and redistribute: the README badge says BSL-1.1 while the repository metadata reports NOASSERTION, and the LICENSE file is the only text that decides. Before committing, read LICENSE, confirm the install script's provenance, and check whether the nightly channel or the tagged v0.44.7 release is the one you intend to run.
Frequently asked questions
What are the top 3 AI agents?
AgentsMesh does not rank agents. The repository topics list claude-code, codex-cli, aider and gemini-cli as the coding agents it is built to run, and the platform schedules and isolates them rather than replacing them.
What are the 7 types of AI agents?
AgentsMesh does not publish a taxonomy of agent types. Its own vocabulary is narrower: AgentPod for an isolated execution environment, Runner for the self-hosted daemon, Autopilot for control-agent supervision, and Mesh and Channel for collaboration between pods.
Is ChatGPT an AI agent?
AgentsMesh takes no position on that question. The agents it manages are coding CLIs, and the README describes runners spawning PTY pods that run those agents on your own machines with your own API keys.
What is mesh AI used for?
In AgentsMesh, the mesh is the collaboration fabric: pods are bound into a topology and talk over channels with @mentions, with the topology updating in real time in the console. The README's stated goal is that agents working in isolation never compound into a team.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/agentsmesh-agentsmesh)