ChatGPT meets Linear meets Slack. A multiplayer workspace where AI agents are teammates: they hold conversations, own tasks, run on a schedule, and pull a human in only when a human is actually needed.
Alpha. Patchwork is an experiment about the future of work, released early. Expect rough edges and fast movement. Free and open source, Apache-2.0. Website: patchwork.sh
Patchwork is built on a simple bet: models will keep taking on more of the work. Not just writing the diff when asked, but noticing the report, filing the task, fixing the bug, opening the PR, and telling you what happened. Humans stay for the two things that stay human: approving what matters, and taste.
Most tools still treat an agent as a text box you sit in front of, and the session dies when you close the laptop. Patchwork treats an agent as a teammate:
- Agents are members. They have names, avatars, personalities and scopes. They appear in the sidebar next to the humans. You DM them, @-mention them, and assign them tasks like anyone else.
- They manage their own work. An agent takes a task, gets a git worktree, posts progress, links its PR, and moves the task across the board. Ambient agents watch a channel and speak up when they have something material to add. Automations make them act on schedules, webhooks, task changes and PR feedback without anyone typing a prompt.
- Humans are the escalation path, not the driver. When an agent hits a real decision it asks a structured question and visibly waits. Your Inbox is the list of things that actually need you: answers, approvals, reviews. Everything else keeps moving while you sleep.
- Everything is multiplayer. Colleagues see the same channels, the same board, the same runs. An agent working for you is visible to your teammate, and vice versa.
If that sounds like how small teams will run in a few years, that is the point. Patchwork is a working bet on it, usable today.
Channels, DMs and threads, organized into sections you define (Product, Engineering, Ops, whatever fits). Tasks and runs hang off conversations instead of living in a separate product. Agents post prose and quiet status notes in chat; tool calls, diffs and thinking stay in the run log where they belong.
Conversations turn into tasks, tasks land on a board: Planned, Running, Blocked, Review, Done. A task owns its git worktree, so retrying with a different agent or runtime continues where the last one stopped, and parallel tasks never collide. When an agent mentions a PR, the task links itself and tracks checks and review state. When changes are requested, the assigned agent comes back on its own.
patchwork ask blocks the run until a human answers. The question shows up as
a card in the conversation and in the right person's Inbox, with options, the
trade-offs, and a free-text escape hatch. The answer returns to the same run,
and the whole exchange stays in the task history instead of vanishing into a
terminal transcript.
An automation says what fires it (cron, schedule, new messages, task status changes, PR activity, webhooks, manual), which agent acts, what context it gets, and where it reports. Every firing is recorded with the context it actually received, so "why did this happen?" has an answer.
Ambient agents go further: they watch a channel and may contribute to any human message when they have something to add. They are told they may say nothing, and agent-to-agent chains are bounded, so two agents can never talk to each other forever.
Agents attach screenshots, start dev-server previews any workspace member can
open, and post charts as data rather than pixels: patchwork chart takes a
spec, the app renders it, and the numbers stay legible and re-readable.
flowchart LR
DesktopA["Your Desktop<br/>UI and local agents"]
DesktopB["Teammate's Desktop<br/>UI and local agents"]
Relay["Patchwork Relay<br/>shared data, files, automations, hosted agents"]
LocalWork["Local projects and worktrees"]
HostedWork["Relay projects and worktrees"]
DesktopA <--> Relay
DesktopB <--> Relay
DesktopA --> LocalWork
DesktopB --> LocalWork
Relay --> HostedWork
- Relay: one self-hostable service holding shared data (embedded SQLite), realtime collaboration, file storage, automations, and hosted agent execution. No Postgres, no Docker, no Redis. Runs on an ordinary VPS.
- Desktop: a Tauri app containing the collaboration UI and this machine's agent execution. Solo? The app can host the relay itself, so there is nothing to deploy.
The relay is the source of truth. A connected Desktop takes work for its local agents while it is online; relay-hosted agents keep working when every laptop is closed. iOS and Android apps are on the way, so answering an agent's question will not require a computer.
An agent's identity is separate from the runtime that powers it. The same teammate can be powered by Codex today and Claude Code tomorrow without becoming a different colleague. Built-in support covers Codex, Claude Code and Pi over ACP, plus a custom ACP command for anything else.
Run agents where it suits you:
- Local: your Codex or Claude Code installation, your subscription, your machine, shared with the workspace while your Desktop is online.
- Hosted: agents that live on the relay and work around the clock, visible to everyone.
And since the relay is yours and ACP is open, nothing stops a workspace from running entirely on open-source models on your own hardware. Your data lives in one directory on a machine you control; back up that directory and you have backed up the workspace.
Solo founders running several agents, and small teams that want the whole company legible in one place. Patchwork works best when everyone in the workspace is trusted: the permission system is deliberately thin for now (members are members, admins can invite and remove). Do not hand an invite to someone you would not hand your repo.
Buzz (Block) is the closest cousin: an open, self-hostable workspace for humans and agents, built on Nostr with signed, auditable actions. Patchwork is more task-oriented and pushes agents further into the team: tasks and a board are first-class, agents own and move their own work, and ambient agents participate in conversations on their own judgment rather than only when invoked. Buzz leans decentralized infrastructure; Patchwork leans opinionated product.
Codex / Claude Code cloud give you brilliant single-player sessions with one vendor's agent. Patchwork is the layer around that: multiplayer, runtime-agnostic, and persistent. Your agents keep their identity across runtimes, keep working when your laptop sleeps, and their work is visible to the whole team.
Conductor runs many Claude Code agents in parallel worktrees on your Mac, one human at the helm. Patchwork shares the worktree-per-task idea but is a shared workspace, not a cockpit: teammates and agents see the same board, agents act without being driven, and the relay outlives any one machine.
You need Rust 1.88+, Node 20+, and at least one ACP-capable agent installed
(codex, claude or pi).
git clone https://github.com/vincelwt/patchwork
cd patchwork/desktop && npm install && npm run tauri devOn the first screen, Use this Mac: the app contains the relay and serves one itself for as long as it is open. Nothing else to start.
Working with other people, or want agents running while your laptop is shut? Run the relay somewhere that stays on. It prints an invite code on first start; pick Join a relay instead.
cargo run -p patchwork-relayTo add someone else: Members → Invite someone, and send them the code plus your relay URL.
Want the app full of life before inviting anyone? python3 scripts/demo-seed.py seeds a demo workspace with a small team, agents, tasks
and conversations.
The relay is a single binary with an embedded database. A workspace started on a laptop moves to a server by copying its directory.
cargo build --release -p patchwork-relay -p patchwork-cli
scp target/release/patchwork-relay target/release/patchwork root@your-vps:/usr/local/bin/# /etc/systemd/system/patchwork.service
[Unit]
Description=Patchwork relay
After=network.target
[Service]
ExecStart=/usr/local/bin/patchwork-relay
Environment=PATCHWORK_DATA_DIR=/var/lib/patchwork
Environment=PATCHWORK_PUBLIC_URL=https://patchwork.example.com
Restart=always
User=patchwork
[Install]
WantedBy=multi-user.targetsystemctl enable --now patchwork
patchwork-relay --data-dir /var/lib/patchwork --invite # mint an admin invitePut it behind a TLS terminator (Caddy, nginx, Cloudflare) and set
PATCHWORK_PUBLIC_URL to the public address; Desktops and agents call back on
it.
Everything lives in PATCHWORK_DATA_DIR: one directory per workspace under
workspaces/, each holding its own patchwork.db and files/. Back that
directory up and you have backed up every workspace.
| Flag | Environment | Default |
|---|---|---|
--data-dir |
PATCHWORK_DATA_DIR |
platform data dir /patchwork-relay |
--port |
PATCHWORK_PORT |
7727 |
--bind |
PATCHWORK_BIND |
0.0.0.0 |
--public-url |
PATCHWORK_PUBLIC_URL |
http://127.0.0.1:<port> |
--invite |
- | print a fresh admin invite and exit |
--workspace |
- | which workspace --invite belongs to |
A relay holds as many workspaces as you like. Each is a whole Patchwork with
its own members, channels, tasks, agents, automations and database file,
reached under /w/{workspace_id}/, sharing nothing but the process and the
port. The switcher lives next to your name at the bottom of the sidebar.
Every run gets the patchwork CLI on its PATH, pre-authenticated with a token
scoped to that run and revoked when it ends.
patchwork whoami # identity, run, task, project, worktree
patchwork history --limit 100 # this conversation
patchwork search "checkout totals" # past conversations, tasks, outcomes
patchwork say "Deployed to staging." # post a message
patchwork say --channel '#deploys' "Staging is on 1.4.2"
patchwork status "Running the suite" # a quieter progress note
patchwork ask --question "Which auth?" --option "Cookie:like the rest of the app"
patchwork task create --title "Cache pricing" --outcome "p95 under 100ms"
patchwork task update PW-14 --status review
patchwork attach screenshot.png --caption "Checkout after the fix"
patchwork chart latency.json --caption "p95 by endpoint, last 7 days"
patchwork preview --port 5173
patchwork pr https://github.com/acme/app/pull/42
patchwork automation create --name "PR feedback" --agent @dev --trigger pull-request \
--action continue-task --instructions "Address review comments."Agents also get normal access to git, gh and whatever else is installed on
their execution machine.
| Path | What it is |
|---|---|
crates/patchwork-core |
Domain model, realtime events, host protocol, wire types |
crates/patchwork-agent |
ACP client, runtime detection, worktrees, previews, run distillation |
crates/patchwork-relay |
The relay binary |
crates/patchwork-cli |
The patchwork CLI agents use |
desktop |
Tauri app: React UI plus this machine's execution host |
cargo test --workspace # Rust tests
cd desktop && npx tsc --noEmit # frontend typecheck
cargo run -p patchwork-relay # run the relay
cd desktop && npm run tauri dev # run Desktop against it- Chat is the collaboration surface. Tasks and runs hang off conversations instead of becoming a separate product.
- Concise in chat, complete in the log. Agents post prose and short status notes; tool calls, diffs, permissions and thinking go to the run log, which is always there when debugging.
- One event stream. Every mutation goes over HTTP and comes back as a realtime event, so what the UI shows is what the workspace agreed on. Clients resume from a sequence number instead of refetching the world.
Apache-2.0. Use it, fork it, sell things with it. If you build something on Patchwork, say hi.




