Model or dataset
AgentsMesh/AgentsMesh avatar
AgentsMesh/AgentsMesh

AgentsMesh: a control plane for running many AI coding agents on your own machines

The AI Agent Workforce Platform. Run a hundred AI coding agents across your own machines — schedule, isolate, and steer them all from one console.

2,349 stars243 forksGoNOASSERTION

At a glance

What is it?
AgentsMesh is a Go server plus a self-hosted runner daemon that schedules isolated agent pods across a fleet of your machines and streams their terminals to one console. The architecture is the interesting part; the licence and the nightly release cadence are the parts to check before you commit.
Who is it for?
Adopt AgentsMesh if you already run several coding agents per developer and the bottleneck has become machine capacity and terminal babysitting, not model quality: the runner fleet, per-pod worktree sandbox and the gRPC/mTLS plus Relay split are the parts that address that directly. Do not adopt it if you are a single developer running one agent in one repository, or if you need a fixed, predictable release channel, because the newest published versions are nightlies.
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 43 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 September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The ceiling AgentsMesh is built to raise

The README frames the problem in one line: individual agent productivity has a ceiling, and the next step is running many agents at once. The four failure modes it lists are concrete. A hundred agents do not fit on one laptop. Nobody can supervise a hundred terminals. Each agent needs its own clean workspace or concurrent runs corrupt each other's state. Long-running agents stall and die quietly. Agents that work in isolation never combine into anything larger. AgentsMesh is positioned as the control layer over those four problems, not as another agent. It does not ship a model or a coding agent; the topics list aider, claude-code, codex-cli and gemini-cli as the things it drives. The audience is therefore teams that already have agents working and have hit an operational wall, not people shopping for their first one.

Runner fleet and pod isolation: the two mechanisms that matter

A Runner is a self-hosted daemon installed on a machine you control. According to the README it connects to the backend over gRPC with mTLS and spawns pods. Each runner advertises its capacity through a key called max_concurrent_pods, and pods are scheduled either onto a runner you pick explicitly or onto one available in the pool. That is the answer to the first wall: capacity becomes a sum over machines rather than a property of one laptop, and the code stays on your infrastructure. The second mechanism is the Workspace. Every AgentPod gets a dedicated Git worktree sandbox at sandboxes/{pod}/workspace/, private credentials, and its own branch. Two agents running at the same time therefore do not share a checkout or a credential set, which is what makes concurrent runs recoverable rather than mutually destructive. The README describes the pod as three things together: a PTY terminal, a Git worktree sandbox, and a real-time output stream. If you have ever watched two agents edit the same working tree, the worktree-per-pod choice is the design decision that will decide whether this tool is useful to you.

Control plane, data plane, and why the backend does not touch PTY bytes

The architecture splits orchestration from terminal traffic. Commands travel over gRPC with mTLS. Terminal I/O goes through a separate, stateless Relay cluster over WebSocket, described as low-latency pub/sub between runners and clients. The README states the backend never touches a single PTY byte and presents that as the reason the fleet can scale. This is a real architectural commitment, not a diagram flourish: it means the API server's memory and connection budget is not proportional to how many agents are streaming output at once. The server side is Go, with the Backend built on Gin and GORM handling auth, org and team management, pod lifecycle, tickets, billing, and the PKI that issues runner certificates. The client side is unusual. A Rust core of ten crates is the business-logic single source of truth, compiled to WASM for web and desktop and exposed as a native dylib through 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 three clients is a strong consistency argument, and it also means the Rust core is the place where client bugs will concentrate.

Autopilot, Mesh and Channels: supervision without a hundred terminals

Autopilot is described as a control agent that watches a pod and sends the next instruction the moment it goes idle. It has iteration caps, a decision history, and human takeover and handback at any point. That combination is what separates it from a loop that simply retries: the caps bound runaway behaviour, the history makes the run auditable, and takeover means a human can intervene without killing the process. Mesh and Channels cover the collaboration side. Pods are bound into a topology and communicate over channels using @mentions, with the topology updating in real time in the console. Tickets are the third piece of the supervision story: a unit of work on a Kanban board, bindable to a pod, with progress and MR/PR tracking. Put together, the intended workflow is that a person reads a board and a topology rather than tailing terminal output. The README does not specify how Autopilot decides what the next instruction should be, or which model drives the control agent, so treat the quality of that decision-making as unverified until you read the docs.

Getting a runner onto a machine

The documented install path is a single shell command: curl -fsSL https://agentsmesh.ai/install.sh | sh. The README says to install one runner per machine you want in the fleet, and that the runner executes agents locally so your code stays on your infrastructure. Two things are worth flagging before you pipe that script into a shell. First, the README's Getting Started section itself points to a separate Runner README for the details, and that link is truncated in the material available here, so the exact registration flags, config file location and default for max_concurrent_pods are not confirmed. Second, the hosted service at agentsmesh.ai is presented as the fastest way to start, with bring-your-own-API-keys and no usage caps. That is a genuine fork in the road: the backend can be hosted while the runners remain yours, which is a different trust boundary from a fully self-hosted deployment. Decide which one you are evaluating before you run the installer, because the answer changes what you need to audit.

Where the material runs out

The README is long on architecture and short on operations. There is no documented answer here for what happens when a runner host dies with pods mid-run, whether a pod's worktree is preserved for recovery or discarded, or how the scheduler behaves when every runner in the pool is at max_concurrent_pods. The claim that long-running agents silently die is stated as a problem Autopilot solves, but the mechanism by which a stalled pod is detected is not described in this material. There is also no stated minimum runner specification, no guidance on how many pods a given machine should host, and no documented limit on fleet size. None of that makes the design wrong. It means the operational envelope is something you will have to establish yourself, and it is the first thing I would look for in the docs before installing runners on machines that matter.

Licence and release cadence

Two housekeeping facts deserve attention. The repository's licence field is reported as NOASSERTION, while the README badge and the LICENSE link point at BSL-1.1. Those are not the same statement, and the Business Source License is not an open source licence in the usual sense: it typically carries terms about production use and an eventual conversion to a different licence. Read the actual LICENSE file before you build on this, and if the distinction matters to your organisation, get it reviewed rather than inferring from a badge. I am not giving legal advice here, only pointing at the discrepancy. On releases, the three most recent entries are v0.44.8-nightly.20260803, v0.44.8-nightly.20260801, and v0.44.7. The nightly naming and the two-day gap between nightlies suggest active development with a stable tag appearing less often. If you need a version you can pin and forget, the nightlies are not that, and v0.44.7 is the stable reference point visible in this material.

How this differs from running agents through CI or a plain container orchestrator

The obvious alternative is to treat agents like any other batch job: define a container image, run one agent per job on your existing CI runners or a Kubernetes cluster, and read the logs when it finishes. That approach gets you isolation and scheduling, and if your agents are short-lived and fire-and-forget it is probably enough. The difference is what happens during the run. A CI job is not interactive: you cannot attach to its terminal, send a new instruction when it goes idle, or take over from an Autopilot loop mid-flight. AgentsMesh's Runner exists specifically to hold a live PTY per pod and stream it through the Relay cluster to a client, which is what makes takeover and handback possible at all. The second difference is the workspace model. A CI job usually starts from a fresh clone and throws it away; the AgentsMesh pod keeps a per-pod Git worktree and branch, which is what makes a long-running agent's work recoverable and reviewable as a branch rather than as a log. If neither interactivity nor recoverable per-agent branches matters to your workload, the orchestrator you already run is the simpler answer and you should not add this.

Editorial conclusion

Adopt AgentsMesh if you already run several coding agents per developer and the bottleneck has become machine capacity and terminal babysitting, not model quality: the runner fleet, per-pod worktree sandbox and the gRPC/mTLS plus Relay split are the parts that address that directly. Do not adopt it if you are a single developer running one agent in one repository, or if you need a fixed, predictable release channel, because the newest published versions are nightlies. Before installing, read the LICENSE file in the repository rather than the badge, since the GitHub API reports NOASSERTION while the README advertises BSL-1.1, and confirm the Runner README's instructions for registering a runner and setting max_concurrent_pods.

Official sources

  1. AgentsMesh/AgentsMesh on GitHub
  2. Issues
  3. Project website
  4. README
  5. Releases
Community notes

Community notes