amesh is a control plane for running ACP-compatible agents across multiple machines.
The MVP focuses on three things:
- Register remote nodes with a central server over WebSocket.
- Attach one or more ACP-backed agents to each node.
- Let users chat with any agent in a web UI and define which agents may trigger other agents across nodes.
Initial product and architecture details live in docs/design/mvp-design.md.
apps/server: Fastify control plane, SQLite persistence, HTTP APIs, and websocket routingapps/web: Vite + React operator dashboard for topology, trigger rules, and chatpackages/protocol: shared runtime schemas and envelope contractscmd/amesh-nodeandinternal/*: Go node daemon scaffold for register or run flows and localacpxexecution against exampleclaude,codex, andopenclawtargets
- The control plane and dashboard are designed to ship as one deployable.
- The root Dockerfile builds the web assets and serves them from the Fastify server process.
- The remote node remains a separate daemon installed on target machines.
- The node installer manages an internal ACPX sidecar so remote hosts do not need a separate global
acpxinstall. - Remote node install does not require
go, but it does requirenode22.x,npm,curl, andtar. - That
noderequirement is runtime-critical, not just an installer detail: many ACPX-backed agent CLIs are Node programs, so the daemon must later see the samePATHand Node runtime that made those CLIs work during registration.
Install the remote node with one command:
curl -fsSL https://raw.githubusercontent.com/code-rabi/amesh/main/install-amesh-node.sh \
| SERVER_URL='ws://your-server:3001/ws?role=node' \
REGISTRATION_TOKEN='demo-token' \
bashcorepack pnpm install
corepack pnpm typecheck
corepack pnpm test