Now in Alpha · v0.x

One platform for humans & AI agents to ship work together.

ACowork is a multi-user, distributed, AI-native collaboration platform. Declarative .agent packages, one Rust binary, standalone-to-cluster — same code path.

Download

Pick your platform.

Pre-built binaries for desktop, plus Android. Alpha channel — see releases for the latest.

Or build from source — component by component:

zsh: ~/ACowork
# 0) Get the source (cross-platform; same on every OS)
$ git clone https://github.com/tranxon/ACowork
$ cd ACowork

# 1) Core — Gateway + Runtime + Node Agent (release profile)
$ ./dev/common/build_core.sh

# 2) Desktop App — macOS (.app / .dmg)
$ ./dev/desktop/macos/package_desktop_macos.sh

# 3) Mobile App — Android (signed release; .ps1 via pwsh on macOS)
$ pwsh ./dev/android/build_mobile.ps1

Need prebuilt convenience? Watch / star the GitHub repo to be notified when release artifacts ship.

Features

What you get, out of the box.

Declarative agents

.agent packages — manifest + prompts + skills, no executable code, signed and verified at install time.

Universal runtime

One Rust binary loads any .agent. Agents talk to LLMs directly — no proxy, no extra latency.

Distributed by default

Gateway + Node + Runtime, one protocol path. Standalone, remote nodes, or relay — same binary, no branches.

AI-native PM & Doc

acowork-pm and acowork-doc as first-class services — REST + MCP, real-time multi-user editing.

Biomimetic memory

Per-agent Grafeo graph DB · 3-tier / 5-class layers · HNSW + BM25 hybrid retrieval.

Multi-tier permission system

Admin/user roles · per-node, per-agent, and per-session visibility with explicit user grants. Least privilege, by default.

Get Started

Same binary. Three wirings.

Once you have the binaries, pick how Gateway and Node Agents wire up — Standalone, Cluster, or Relay. Same code path either way.

Deployment topologies

Pick the wiring that fits.

Every variant shows the Gateway command, the Node command (or “auto”), and what the GUI apps do.

A · Standalone

Local single host

Personal use, demos, edge devices. Gateway auto-spawns one local Node Agent. Zero setup.

Gateway
acowork@gateway: ~
$ ./acowork-gateway
✓ Gateway     listening on  http://127.0.0.1:19876
✓ MQTT broker on              127.0.0.1:19875
✓ Local Node Agent enrolled (uuid=local-…)
Node

Auto-spawned by the Gateway as name=local — no manual command needed.

Desktop — double-click the app icon. Defaults to Local mode pointing at http://127.0.0.1:19876, auto-connects. · Mobile — N/A in Standalone (the mobile app always points at a remote Gateway).

B · Cluster

Remote nodes

Multiple machines, one Gateway. Run heavy agents on a GPU box, lightweight on a laptop — both enroll over MQTT.

Gateway · controller host
acowork@gateway: ~
$ ./acowork-gateway \
      --addr            0.0.0.0:19876 \
      --mqtt-addr       0.0.0.0:19875 \
      --advertise-host  gw.lan
✓ Gateway     listening on  http://gw.lan:19876
✓ MQTT broker on              gw.lan:19875
Node · every Runtime host (GPU box, workstation, VM)
acowork@node: ~
$ ./acowork-node start \
      --gateway gw.lan:19875 \
      --token   $ENROLL_TOKEN
✓ enrolled as node-<uuid> · Runtime host ready

Desktop — Settings → Gateway tab → switch to Remote (LAN) → enter http://gw.lan:19876. · Mobile — same URL; works on the phone over Wi-Fi.

C · Relay

NAT’d / remote access

Reach your home Gateway from anywhere with a thin WSS tunnel — no public port, no VPN. Layered on top of Standalone or Cluster.

Gateway · flip the tunnel on (no restart)
acowork@gateway: ~
$ curl -X POST http://127.0.0.1:19876/api/relay/enable \
      -H 'Content-Type: application/json' \
      -d '{"url": "wss://relay.example.com/tunnel"}'
✓ tunnel established · gw-id: 7f3a-…
Node

Unchanged — Nodes still talk to the local Gateway as before. Relay only rewires the inbound path.

Desktop — Settings → Gateway tab → switch to Relay (WAN) → enter https://7f3a-….relay.example.com. · Mobile — same; ideal for on-the-go access to a home gateway.

More in the upstream design docs and AGENTS.md.