README.md
Rama main · réplica de lectura del repositorio original.
# AgentRQ ── Agent-Human Collaboration Platform
<p align="center">
<a href="README.zh-CN.md">简体中文</a>
<br />
<br />
<a href="https://chromewebstore.google.com/detail/agentrq/iadkenmjgjoilnioldgchgjpdnbaghbj">
<img src="https://img.shields.io/badge/Chrome%20Web%20Store-Add%20to%20Chrome-4285F4?style=for-the-badge&logo=googlechrome&logoColor=white" alt="Chrome Web Store" />
</a>
</p>
AgentRQ is a modern, high-performance platform designed for seamless collaboration between human operators and AI agents. It leverages the **Model Context Protocol (MCP)** to allow AI models (like Claude) to interact directly with your workspace's task management system.
## 🚀 Overview
Think of AgentRQ as a shared workspace where humans and AI agents work together seamlessly. You can break down complex goals into manageable tasks, and delegate work directly to your AI agents.
Because agents "see" the workspace state via MCP, they can autonomously pull their assigned tasks, update statuses, request permissions for sensitive actions, and communicate with you—all synchronized instantly across the platform in real-time.
<p align="center">
<img src="docs/assets/readme/task-board.svg" width="1200" alt="AgentRQ task board: you add five tasks and five agents, claude, codex, agy, hermes and openclaw, each pick up their own. Cards move from Not Started to Ongoing; codex asks a question and its card turns Blocked until you click Allow; then every card lands in Done and the agents celebrate." />
</p>
## ✨ Features
Animated sketches of the main features.
<table>
<tr>
<td colspan="2" valign="middle">
### Visual Task Board
Every task Claude creates appears instantly on your board. See what it's working on, what it needs, and what it just finished — all from a clean, fast dashboard you can open on any device, as a list or a Kanban.
</td>
</tr>
<tr>
<td colspan="2" valign="middle">
### Task Scheduling
Give any task a launch date, or a recurring cadence — every 15 minutes, hourly, daily, weekly, custom days. A background poller ticks every minute and spawns the task the instant it's due, no server or agent needing to stay awake and wait.
<img src="docs/assets/readme/task-scheduling.svg" width="1200" alt="AgentRQ task scheduling: you give a task a cadence, every 15 minutes, and click Save. A poller ticks every minute while five agents, claude, codex, agy, hermes and openclaw, sleep; when a scheduled task comes due its row flashes and a run flies down to its agent, which wakes, works and finishes, and the next run rolls forward." />
</td>
</tr>
<tr>
<td width="50%" valign="middle">
### Events
Events are named signals — `qa_passed`, `deploy_finished`, `blog_published` — that any task can fire when it completes. Wire one to a workspace and that workspace gets a new task automatically, no polling and no glue code.
</td>
<td width="50%" valign="middle">
### Workflows
A Workflow is Events and workspaces arranged on a graph. Drag a workspace onto an event to subscribe it; drag an event onto a workspace to emit it on completion. No decision-tree DSL, no YAML — just the shape of your release process, visible.
</td>
</tr>
<tr>
<td colspan="2"><img src="docs/assets/readme/events-workflows.svg" width="1200" alt="AgentRQ workflows: you drag the release workspace onto the deploy_finished event. claude finishes the qa task, so qa_passed fires and a pulse runs into deploy, which gets a new task; codex deploys, deploy_finished fires and release gets its task; hermes writes the release notes and claude, codex and hermes celebrate." /></td>
</tr>
<tr>
<td colspan="2" valign="middle">
### Tool Call History
The task detail view's History tab lays out a lane-grouped timeline of every tool call and message in a run — Input, Agent, and Tools. Search it, click into any entry, and see exactly what ran, what it returned, and whether it was allowed or denied.
<img src="docs/assets/readme/tool-call-history.svg" width="1200" alt="AgentRQ tool call history: a task's Trajectory view lays out the run on three lanes, Input, Agent and Tools. claude reads, greps and edits; a Bash call waits for you and you deny it, so it turns red; claude tries another way and npm test passes. You open that call to see what ran and what it returned, then search for bash and only the two Bash calls stay lit, while the agents celebrate." />
</td>
</tr>
<tr>
<td colspan="2" valign="middle">
### YOLO Mode
Flip **YOLO** on a task and every permission request its agent sends from then on is allowed automatically: no waiting on you, and each call is still recorded in the task's history as auto-allowed. Turn it off and approvals come back. A workspace can turn it on for every task its agent creates, and an event trigger or a workflow step can create its tasks with it on.
<img src="docs/assets/readme/yolo-mode.svg" width="1200" alt="AgentRQ YOLO mode: claude asks to run go test and waits, so you flip the task's YOLO toggle instead of answering. That call and every one after it is auto-allowed, edits and test runs land in the Trajectory view without a single wait, and 48 tests pass. You open the last call to see it was auto-allowed, turn YOLO off again, and the agents celebrate." />
</td>
</tr>
<tr>
<td colspan="2" valign="middle">
### Task Timeline
Under every task, a timeline shows each status it has been in and for how long: a dot per change, with the time spent on the line to the next, stretches waiting on you in yellow and blocked ones in red. Above it, the totals say which agent worked on it and for how long, how long it was blocked or waited for your input, and how long it took from start to close. Every status change is recorded with the task itself, so nothing moves without leaving a dot.
<img src="docs/assets/readme/task-timeline.svg" width="1200" alt="AgentRQ task timeline: under a task, a dot lands for every status it enters, with the time spent on the line to the next. claude picks up Migrate users table, waits on you to allow a command (a yellow needs-input stretch), later is blocked until you reply (a red stretch), and completes it; the totals read claude-code worked 14m, blocked 3m, needs input 2m, start to close 19m, and claude celebrates." />
</td>
</tr>
<tr>
<td colspan="2" valign="middle">
### Speech-to-Text
Click the mic on any task description or reply and dictate it instead. Transcription runs on an in-browser Whisper model — your voice is processed on-device and never uploaded anywhere.
<img src="docs/assets/readme/speech-to-text.svg" width="1200" alt="AgentRQ speech-to-text: you click the mic on the New Task form and say 'Add a dark mode toggle to settings'. The first time, a Whisper model downloads into the browser; it turns your voice into text on the device, uploading nothing, and the text lands in the description. agy takes the task, asks a question, you dictate the reply, agy finishes and the agents celebrate." />
</td>
</tr>
<tr>
<td colspan="2" valign="middle">
### Message Send Delay
Give a workspace a countdown — 3s, 5s, 10s, 15s, 30s or 60s — and every chat message waits that long in the thread before it reaches the agent. **Send Now** delivers it early, **Cancel** pulls it back unsent and puts the exact text and attachments back in your composer. Off by default, per workspace.
<img src="docs/assets/readme/message-send-delay.svg" width="1200" alt="AgentRQ message send delay: you type 'deploy to prod' and send it, and it waits in the thread with a 5 second countdown and Cancel and Send Now buttons while codex has not seen it yet. At 3 you click Cancel and the text comes back to the composer; you change it to 'deploy to staging', send it, and click Send Now, so codex gets it, deploys, and the agents celebrate." />
</td>
</tr>
<tr>
<td colspan="2" valign="middle">
### Search & Keyboard Shortcuts
<kbd>⌘K</kbd> (<kbd>Ctrl+K</kbd> off macOS) opens a task finder that matches any word in a title or description, straight from the copy your device already saved — so it answers offline, and tells you how far it looked. Everything else is a bare letter: <kbd>N</kbd> for a new task, <kbd>W</kbd> and <kbd>M</kbd> to jump to a workspace or a machine, <kbd>P</kbd> for the Pano, <kbd>C</kbd> and <kbd>T</kbd> to flip between a task's chat and its trajectory, <kbd>?</kbd> for the list. Nothing to configure, and nothing to memorise.
<img src="docs/assets/readme/search-keyboard-shortcuts.svg" width="1200" alt="AgentRQ search and keyboard shortcuts: claude has a question on a task you cannot see in a busy workspace, so you press ⌘K and type 'migration'. The finder narrows the tasks saved on this device to 'Run the users migration' without asking the server; Enter opens it and C flips to the chat, where you answer and claude finishes. Then W, P and ? bring up the workspace switcher, the Pano and the keyboard shortcuts sheet while the agents celebrate." />
</td>
</tr>
<tr>
<td colspan="2" valign="middle">
### Machines
Install `agentrqd` on a computer you own, enrol it once with a single-use code typed on the machine itself, and it becomes somewhere agents can run — in your repositories, with your toolchain. Pick a workspace and what to run, and it starts in that workspace's folder on that machine. Each machine's page shows what it has left: CPU, memory, uptime, load and free space per filesystem.
<img src="docs/assets/readme/machines.svg" width="1200" alt="AgentRQ machines: you click Add machine and get a single-use code, and typing it on your own computer enrols it, so dev-box comes online. You pick the agentrq-web workspace and Start agent, and claude starts in that workspace's folder on the machine, straight into its terminal. Back on the machine page one session is running, and Machine Info shows CPU, memory and load climb while claude works and fall when it is done, and claude celebrates." />
</td>
</tr>
<tr>
<td colspan="2" valign="middle">
### Live Terminals
Open a running session from any browser and you are at the prompt. Keystrokes go straight through as the bytes your keys produced — <kbd>Esc</kbd> and <kbd>Ctrl-C</kbd> included — resizing reflows the program on the far end, and the session keeps running whether or not anybody is watching. Drop the network and the screen is still there when you come back.
<img src="docs/assets/readme/live-terminals.svg" width="1200" alt="AgentRQ live terminals: on the machine page you open claude's running session and you are at its prompt in the browser. You answer y, then press Esc when claude takes a wrong turn and type a new instruction, every key going down the wire to the machine. The network drops and you close the tab, but on the machine claude keeps working; when you come back the screen is restored and has moved on, claude finishes, hermes opens the same session, and the agents celebrate." />
</td>
</tr>
<tr>
<td colspan="2" valign="middle">
### Skills
Give a workspace's agents the playbooks your team already follows. A skill is a `SKILL.md` plus the files it points to, in the same format Claude Code uses. Paste a public GitHub link, such as [obra/superpowers](https://github.com/obra/superpowers), and every skill in it is imported. Write your own, or let an agent save one. Skills belong to your account: turn each one on in the workspaces that need it, and they all read the same copy, so an edit reaches every one of them. Every agent that connects to the workspace is told to search its skills at the start of a task and load the ones that match, over MCP, whatever harness it runs in. [How skills work →](docs/SKILLS.md)
<img src="docs/assets/readme/skills.svg" width="1200" alt="AgentRQ skills: you paste a GitHub link and import three skills, tdd, code-review and release, then turn them on in the api, web and docs workspaces. Each agent, claude, codex and agy, gets a task, finds the skill that matches and loads it; you edit code-review and the one copy updates in every workspace, and the agents finish and celebrate." />
</td>
</tr>
<tr>
<td colspan="2" valign="middle">
### Pano
A board of markdown docs that every workspace of your account shares. An agent posts a plan, a report or a chart, and hands its id to the agents in other workspaces that need it. They read it, comment on it and attach files. You see every doc as a post-it, edit it, comment on it, or write your own and turn it into a task. Each doc lives 30 days from its last save unless the agent asks for longer. [How the Pano works →](docs/PANO.md)
<img src="docs/assets/readme/pano.svg" width="1200" alt="AgentRQ Pano: claude posts a Release plan on the board every workspace shares, with a checklist assigned to agy, codex and openclaw, and hands its id to them. They read it and comment, and each item ticks itself as its task finishes until it reads 3 of 3 done; then you write a note of your own, turn it into a task for hermes, and everyone celebrates." />
</td>
</tr>
<tr>
<td colspan="2" valign="middle">
### Isolated Workspaces
Each workspace is its own world: one project or mission, with its own MCP server address and token, its own task queue, memory and settings — which commands are auto-allowed, how long a message waits before it is sent — and its own folder on every machine that runs it. An agent connects with one workspace's token and sees that workspace alone: its tasks, its memory, its permission requests. Nothing crosses between workspaces by accident; when work should cross, it does so on purpose, through a Pano doc, an event, or the supervisor workspace.
<img src="docs/assets/readme/isolated-workspaces.svg" width="1200" alt="AgentRQ isolated workspaces: api, web and docs each have their own MCP server and token, folder, tasks, memory and settings. claude, codex and agy connect with their own workspace's token and take only its tasks; codex saves a memory and it lands in web alone, and codex sees web and nothing else. agy asks to push in docs and you allow it there, then all six tasks are done and the agents celebrate." />
</td>
</tr>
<tr>
<td colspan="2" valign="middle">
### Workspace Forks
Fork a workspace to have a second agent take some of its tasks in parallel. Right-click it in the sidebar to fork it, or choose **Spin up** on a task, which forks the workspace, moves the task in and launches an agent in one step. The fork has its own queue and agent. It shares the parent's memory, skills and settings, and runs in its own git worktree or copy of the parent's folder. When its tasks are done, merge it back: its agent is stopped and every task returns to the parent with its thread. [How forks work →](docs/FORKS.md)
<img src="docs/assets/readme/workspace-forks.svg" width="1200" alt="AgentRQ workspace forks: claude has six tasks in the api workspace, so you fork it into api-fork and move three tasks there. codex works the fork while claude works api, both sharing the same memory, skills and settings; when the fork's tasks are done you merge it back, its three tasks return to api with their threads, and the agents celebrate." />
</td>
</tr>
</table>
See the full list at [agentrq.com/features](https://agentrq.com/features).
## 🏛 Architecture
AgentRQ follows a decoupled service-oriented architecture:
### Backend (Go / Fiber)
- **API Server**: Fiber-based REST API for workspace and task management.
- **MCP Server**: Integrated `mcp-go` SSE server that exposes tools and resources to AI models.
- **CoreMCP (Supervisor)**: A global MCP server that allows agents to manage all workspaces, tasks, and statistics across the entire platform.
- **Data Layer**: GORM with SQLite for persistent, user-scoped storage.
- **Authentication**: Google OAuth2 integration with JWT-based session management.
- **Event Bus**: Internal pub/sub system for real-time SSE notifications.
### Frontend (Vue.js 3 / Vite)
- **Modern UI**: Tailored with Vue 3, Pinia, and Tailwind CSS.
- **Glassmorphism**: A sleek, premium design language with smooth transitions and real-time updates.
- **Reactive State**: Synchronized with the backend via SSE events.
### Desktop (Electron)
- **Same application, native shell**: the desktop app renders the *same* Vue components as the browser, so the two never diverge.
- **Native notifications**: agent activity reaches you while the window is in the background, with a dock or taskbar badge.
- **Tray, global shortcut, deep links**: `Cmd/Ctrl+Shift+N` from anywhere, and `agentrq://` URLs that open the app at a specific task.
- **Auto-updating**: checks in the background and installs on restart.
## 💻 Desktop App
AgentRQ has a desktop app for macOS, Windows and Linux. It is a client — it
connects to whichever AgentRQ server you run.
On macOS and Linux, one command installs it — and updates it later:
```sh
curl -fsSL https://agentrq.com/install.sh | sh -s -- --quit
```
Or **[download the latest release →](https://github.com/agentrq/agentrq/releases/latest)**
| Platform | Download |
|---|---|
| macOS | `.dmg` — Apple silicon and Intel |
| Windows | `.exe` installer — x64 and arm64 |
| Linux | `.AppImage` or `.deb` — x64 and arm64 |
| Tauri build (preview) | `.dmg`, `.exe`, `.AppImage`, or `.deb` (`AgentRQ-Tauri-` assets, or `install.sh --tauri`) — see [Preview: Tauri build](docs/DESKTOP.md#preview-tauri-build) |
Builds are currently **unsigned**, so a hand-downloaded build warns on first
launch on macOS and Windows, and macOS cannot auto-update until signing
certificates are in place — the install command above is the way around both.
Connecting to a server and troubleshooting are covered in the
[Desktop Guide](docs/DESKTOP.md).
## Extending the desktop app
Extensions add pages, actions, keyboard shortcuts and scheduled work. They are
ordinary Node modules, discovered from GitHub repositories carrying the
`agentrq-extension` topic, and installed from the desktop app.
**Extensions are desktop-only, and deliberately so.** An extension is code
somebody else wrote, running with the privileges of the process it is in. On a
self-hosted server that would mean a stranger's code next to your database and
your other users; on the desktop it runs on the machine of the person who chose
to install it. The server never loads extension code.
What AgentRQ does enforce is everything it owns: which surfaces an extension can
contribute to, and which MCP tools it may call against which workspaces — the
extension never holds a credential, it asks, and the app attaches the token on
the way out. That is a real boundary around your AgentRQ data. It is not a
sandbox around your machine, and the install screen says so on every install.
Three worked examples live in [`examples/extensions/`](examples/extensions/),
from one that asks for no permissions at all to one that runs a daily digest
across every workspace. See the [Extensions Guide](docs/EXTENSIONS.md).
## 🧭 Chrome Extension
**[Add AgentRQ to Chrome →](https://chromewebstore.google.com/detail/agentrq/iadkenmjgjoilnioldgchgjpdnbaghbj)**
AgentRQ lives in your browser's toolbar: open your workspaces in a popup, or full
size in a tab.
- **Bridge any WebMCP site into your agents.** When a website offers tools
through [WebMCP](https://github.com/webmachinelearning/webmcp), the toolbar
icon lights up; share the site with a workspace and its agents can call those
tools in your own signed-in Chrome. A tool the site does not mark read-only
waits for your approval in the task first.
- **Your agents' terminals, right inside your browser.** Open the live terminal
of a Claude Code, Codex or Antigravity session running on one of your
[machines](#machines) and work in it without leaving the tab you are in.
Installing from source and self-hosted servers are covered in the
[extension's README](plugins/chrome/README.md).
## Driving AgentRQ from a browser agent
If your browser supports [WebMCP](https://github.com/webmachinelearning/webmcp),
an AI agent you talk to there can use AgentRQ directly — list your workspaces,
open a task, reply in it, build a workflow. Everything the interface can do is
offered as a tool, including asking which page you are on, so "reply to this
task" resolves to the task you have open.
The tools run in the page as you, with your session, so an agent gets exactly
your permissions and nothing more, and they are withdrawn when you sign out.
Nothing to install or configure; a browser without WebMCP simply sees no tools.
See the [WebMCP Guide](docs/WEBMCP.md).
## Driving AgentRQ from the command line
Inside a workspace directory — one with the `.mcp.json` an agent works from —
the same capabilities are a shell command away:
```bash
npx -y @agentrq/agentrq-ws@latest help
```
It reads that `.mcp.json`, so there is nothing to configure, and it covers every
workspace tool: read and create tasks, reply, publish events, read and write the
workspace memory, ask a human a question. Attachments are plain file paths in
both directions — `--attach ./run.log` to send one, and a download writes the
file and prints where it went. See
[cli/agentrq-ws](cli/agentrq-ws/README.md).
### 🖥️ Your own machines
Install `agentrqd` on a computer, enrol it once, and you can start an agent for
a workspace on it from the control panel — then watch its terminal and type into
it, `Esc` included. The machines page shows what each box has left: memory, CPU
and free space per filesystem, so you can tell whether it can take another
agent.
On Linux and macOS:
```bash
curl -fsSL https://agentrq.com/install-agentrqd.sh | sh
```
On Windows (PowerShell):
```powershell
irm https://agentrq.com/install-agentrqd.ps1 | iex
```
Either one picks the right build, **verifies it against the checksums
published with the release**, and puts it on your `PATH`; running it again
updates in place. It installs only — enrolling stays a separate, deliberate
step, and it never runs as root or Administrator. Manual installs are on the
[releases page](https://github.com/agentrq/agentrq/releases/latest)
— one static binary for Linux, macOS and Windows.
Then **Machines → Add machine** gives you a code to enrol it with.
Enrolling a machine is a real grant, and the [Daemon
Guide](docs/DAEMON.md) says so plainly: it lets anyone who can authenticate as
that account run commands on the machine as the user who started the daemon.
Read it before you enrol anything. It also covers the local kill switch, which
works without the server's cooperation, and what the audit trail records —
starts, kills and attaches, never keystrokes.
### ⌨️ Agent slash commands
Agents connected through the ACP gateway advertise commands of their own —
`/init`, `/compact`, `/review`, whatever they ship with. Type `/` in a task and
they appear above the reply box, filtered as you type and chosen with the
keyboard or the mouse. The list comes from the agent and follows it live, so it
changes as the agent's context does. An agent that advertises none gets no menu
and nothing changes. See the [Slash Commands Guide](docs/SLASH_COMMANDS.md).
### 🧠 Choosing the agent's model
Where an agent offers a choice of model, you can make it from the interface —
on a workspace card, and on the form where a task is written, so the model is
settled before the work starts rather than after. Choosing shows the new model
straight away but marks it as asked-for until the agent itself confirms; if it
refuses, or never answers, the interface goes back to what is actually running
and says so.
The choice appears only where it would do something. An agent that reports no
models — Claude Code connected directly, among others — shows none, and neither
does an ACP gateway older than the release that learned to switch on request:
it says which model it is on without claiming it can change it. Nothing to
configure either way.
To run it from source:
```bash
make install # dependencies for the whole repo
make desktop-dev # run the desktop app against a local server
make desktop # build installers into desktop/release/
```
## 🛠 Getting Started
### Prerequisites
- **Go** 1.27.1+
- **Node.js** 18+ (with npm)
- **OpenSSL** if `make dev` needs to generate a local JWT secret
- **Google Cloud Console**: An OAuth2 Client ID and Secret.
### Configuration
1. Edit `backend/cmd/server/_config/base.yaml` (or `development.yaml`).
2. Fill in your Google OAuth2 credentials:
```yaml
auth:
google:
clientId: "your-google-client-id"
clientSecret: "your-google-client-secret"
```
3. Set `AGENTRQ_AUTH_JWT_SECRET` to a stable random value (at least 32 characters) when starting the backend directly. In the default development mode, `make dev` generates and reuses a local value if the variable is absent.
### Running Locally
Use the provided `Makefile` to start the full stack:
```bash
# 1. Install all dependencies
make install
# 2. Start both Frontend and Backend
make dev
```
The frontend will be available at `http://localhost:5173`. For the desktop app,
run `make desktop-dev` in another terminal — see the [Desktop Guide](docs/DESKTOP.md).
### Self-Hosting (Docker)
For running the production or development stack using the pre-built Docker image, see the [Self-Hosting Setup Guide](SETUP.md).
> [!NOTE]
> **Agents / AI Assistants:** If you need to set up, configure, run, or diagnose a local self-hosted instance of AgentRQ using Docker, refer to [SETUP.md](SETUP.md) for step-by-step instructions, Docker run commands, and environment variable configurations.
## 🤖 Claude Code & AI Integration
AgentRQ is designed for seamless integration as a **Claude Channel**. This allows your AI agents to see tasks assigned to them and respond directly within your Claude session.
Each workspace has its own MCP URL and token (visible in the workspace setup modal). In production, these follow the pattern `https://WORKSPACE_ID.mcp.agentrq.com/`.
### Step 1 — `.mcp.json`
Create a `.mcp.json` file in your local project directory (the leading dot is required). Each project gets its own file so Claude instances stay isolated per workspace. Replace `YOUR_MCP_URL` below with the full URL shown in the setup modal (e.g. `https://WORKSPACE_ID.mcp.agentrq.com/?token=TOKEN`).
```json
{
"mcpServers": {
"agentrq-WORKSPACE_ID": {
"type": "http",
"url": "YOUR_MCP_URL"
}
}
}
```
### Step 2 — `.claude/settings.local.json`
Add a `.claude/settings.local.json` file in the same project directory to pre-approve the AgentRQ tools and avoid permission prompts on every action. The wildcard covers every tool the workspace exposes, including any added later:
```json
{
"permissions": {
"allow": ["mcp__agentrq-WORKSPACE_ID__*"]
},
"enableAllProjectMcpServers": true,
"enabledMcpjsonServers": ["agentrq-WORKSPACE_ID"]
}
```
### Step 3 — Start Claude
Once both files are in place, launch Claude Code from that project directory:
```bash
claude --dangerously-load-development-channels server:agentrq-WORKSPACE_ID
```
> **Tip:** The workspace ID, full MCP URL (with token), and ready-to-paste config snippets are all available in the **Setup** modal inside each AgentRQ workspace.
### Available MCP Tools
When connected, the AI agent has seven tools. Each takes two inputs, `action` and `payload` (the action's fields), e.g. `task {"action": "reply", "payload": {"taskId": "<id>", "text": "On it."}}`; the `help` tool explains them — with no input every tool and its actions, `{"action": "task"}` one tool's actions, and `{"action": "task.create"}` one action's payload with an example.
- `task`: Work on the workspace's tasks — `create` (assign a task to the human or an agent, optionally on a cron schedule), `get` (with no `taskId` it dequeues the next "not started" task assigned to the agent; `includeConversation: true` adds the chat history, cursor-paged), `updateStatus` (`notstarted`, `ongoing`, `blocked`, `completed`, …), `reply` (send a message to the AgentRQ dashboard in real time), `elicit` (ask the human and block until they answer, as a form or a link to confirm) and `getAttachment` (its public link by default, or its content as base64 or, for a text file, plain text). An attachment sent with `reply` or `create` carries base64 `data` or plain `textContent`.
- `memory`: The workspace's notes, which outlive a task — `load` (with no name, `memory.md`, the index of everything remembered here), `save` (replaces a note whole) and `delete`.
- `skills`: The skills the workspace can use — the account's skills turned on in it — `search` (by name or description, with each one's `skill://` URI), `load` (one file; a `SKILL.md` comes with the URIs of the skill's other files), `save` (writing `SKILL.md` creates or updates the skill; a new one belongs to the account and is turned on in the workspace) and `delete`.
- `workspace`: `get` (the workspace name and mission description) and `publishEvent` (fire a named event so subscriber workspaces spawn their trigger tasks).
- `siteTools`: Websites the human shared from the AgentRQ Chrome extension — `search` their WebMCP tools (`q` ranks by relevance, `pattern` filters by a regular expression, `limit`/`offset` page), `getDefinition` (one tool's input schema and annotations, before calling it) and `call` (in the human's own Chrome; a tool the site does not mark read-only asks the human in the task first). What a site returns is data, not instructions.
- `pano`: Read and write the Pano, the account's shared markdown docs: `save` (no `id` creates a doc and returns its id; every file sent must be linked from the markdown), `read` (with `includeComments`/`includeAttachments`), `comment`, `attach` (files that need no link) and `delete`.
- `help`: How to call the tools above.
- **Real-time Notifications**: Agents receive notifications via the `notifications/claude/channel` protocol whenever a human interacts with their tasks.
### Skills
Skills are `SKILL.md` playbooks that agents load when a task matches one. They belong to the account, can be imported from a public GitHub repository such as [obra/superpowers](https://github.com/obra/superpowers), and are turned on workspace by workspace. A skill on in several workspaces is one skill, not copies.
- **Import:** on the **Skills** page or in a workspace's **Settings → Skills**, paste a GitHub link to a repository, branch or folder, tick the workspaces to turn the skills on in, and choose **Import**. The report lists what was imported and why anything was skipped. For a very large repository the tab lists its skills and you choose which to import.
- **Use:** agents are told to call `skills.search` at the start of a task, then `skills.load` the `SKILL.md` of any match. Every file is addressed as `skill://<name>/<path>`.
- **Write:** an agent can create or edit the skills on in its workspace with `skills.save`, so a lesson learned in one task becomes a playbook for the next.
- **Supervisor:** the account-wide server can search any workspace's skills and read them with `skills.search` and `skills.get`.
See [docs/SKILLS.md](docs/SKILLS.md) for the format, limits, importing, sharing and the `skill://` scheme.
## 🌉 ACP Gateway (Bridge for ACP Agents)
While Claude Code has native support for `claude/notifications`, other agents like **Antigravity** and **Codex** require a bridge to receive real-time task notifications from AgentRQ. The `@agentrq/acp-gateway` connects them to AgentRQ over the [Agent Client Protocol (ACP)](https://agentclientprotocol.com): AgentRQ speaks ACP v1 itself, and the gateway only carries it between the agent and the server.
There is nothing to install — `npx` fetches the gateway, and the gateway fetches
the agent you name.
### Usage
1. Ensure you have a [`.mcp.json`](#step-1--mcpjson) in your project root.
2. Log in to your agent once, then start the gateway from the same directory as
`.mcp.json`:
```bash
# Using Antigravity
npx -y @agentrq/acp-gateway@latest --login --agent antigravity-acp --allow-unverified-agent
npx -y @agentrq/acp-gateway@latest --agent antigravity-acp --allow-unverified-agent
```
```bash
# Using Codex
npx -y @agentrq/acp-gateway@latest --login --agent codex-acp
npx -y @agentrq/acp-gateway@latest --agent codex-acp
```
Antigravity is published as a binary the registry carries no checksum for, so it
needs `--allow-unverified-agent` on every command; Codex ships as an npm package
and does not. Sign out again with `--logout` in place of `--login`.
The gateway will automatically:
- Connect to your AgentRQ workspace via the URL in `.mcp.json`.
- Spawn the agent subprocess and bridge standard I/O.
- Forward task assignments, messages, and permission requests in real-time.
### ACP v1
The gateway needs Node 22 or newer, and a server that has not turned ACP v1 off
with `AGENTRQ_ACP_V1_ENABLED=false` (it is on by default; see
[Native ACP](docs/SETUP_PRODUCTION.md#native-acp)). The gateway no longer talks
to AgentRQ over MCP, so a server with ACP v1 off cannot run it.
## 🌌 Codex (via the ACP Gateway)
[OpenAI Codex](https://github.com/openai/codex) connects through the same
[ACP Gateway](#-acp-gateway-bridge-for-acp-agents) as every other agent. The
gateway resolves `codex-acp` from the [ACP registry](https://github.com/agentclientprotocol/registry)
and runs it for you, so there is nothing to install and nothing to configure
beyond the `.mcp.json` the gateway reads.
> Earlier releases used a separate `@agentrq/codex-gateway` package and a
> `.codex/config.toml`. Neither is needed now.
### Setup
1. Ensure you have a [`.mcp.json`](#step-1--mcpjson) in your project root.
2. Log in — Codex will not open a session until you have. The first run fetches
the agent, then hands you its login:
```bash
npx -y @agentrq/acp-gateway@latest --login --agent codex-acp
```
3. Start the bridge. Run it from the same directory as `.mcp.json`:
```bash
npx -y @agentrq/acp-gateway@latest --agent codex-acp
```
Sign out again with `--logout` in place of `--login`. The registry publishes
Codex as an npm package, so npx fetches it on first use and keeps it current —
unlike the binary agents, it needs no `--allow-unverified-agent`.
## 👑 Supervisor (CoreMCP)
While individual workspaces provide a scoped view for specific projects, the **Supervisor (CoreMCP)** is a global MCP server that grants an agent bird's-eye view and management capabilities across your entire AgentRQ account.
The Supervisor is accessible at `https://mcp.agentrq.com/mcp`. It uses **OAuth2** for secure authentication, allowing modern AI tools (like Claude Code) to connect securely.
### Why use the Supervisor?
- **Multi-Workspace Management**: List, create, and update workspaces.
- **Global Task View**: Fetch tasks from all workspaces in a single call (`task.listAll`).
- **Administrative Control**: Manage task assignments, status, and priorities globally.
- **Unified Statistics**: Access detailed statistics and health metrics for any workspace.
### Available Supervisor Tools
The Supervisor has nine tools. Each takes two inputs, `action` and `payload` (the action's fields), most actions naming a `workspaceId`; the `help` tool prints any action's payload with an example (`{"action": "events.createTrigger"}`).
- `workspace`: `list` (active and archived workspaces), `create`, `get`, `update` (settings and metadata), `stats` (analytics over 7 or 30 days), `fork` (so a second agent can work some of its tasks in parallel) and `mergeFork` (back into its parent once its tasks are done).
- `task`: Every workspace's tasks — `listAll` (search and filter across the platform), `list` (one workspace), `create`, `get` (tool calls only with `includeToolCalls`; `messagesSince` keeps the newer messages), `messages` (just the conversation, oldest first, with the task's status: the efficient way to follow up), `updateStatus`, `updateSortingOrder`, `updateAssignee`, `updateAllowAll` (`allow_all_commands`), `updateSchedule` (a scheduled/cron task), `delete` (with its messages and attachments — the way to retire a schedule rather than leave it running), `reply` (post to a task's thread), `respond` (allow/deny a permission request) and `getAttachment` (its public link by default, or its content as base64 or plain text, with its metadata).
- `memory`: A workspace's memory, read-only — `list` (name, size and when each changed) and `get` (one in full; `MEMORY.md` is the index the others hang off).
- `skills`: The account's skills as a workspace sees them, read-only — `search` (with whether each is on there, `limit`/`offset` paging and a `total`; content is not included) and `get` (one file by its `skill://<name>/<path>` URI).
- `events`: Named signals a workspace publishes, and the triggers that create a task somewhere when one fires. Publishing stays agent-side (`workspace.publishEvent` on the per-workspace server) — the supervisor builds the wiring, the workers fire it. `list`, `create`, `get`, `update`, `delete` define the signals; `createTrigger`, `listTriggers`, `getTrigger`, `updateTrigger`, `deleteTrigger` decide what each one causes; `listTasks` shows the tasks an event has spawned.
- `workflows`: The graph those pieces add up to: a start event, and the steps that react to it and to each other. `list`, `create`, `get`, `update`, `delete` the graph itself; `createStep`, `listSteps`, `deleteStep` its nodes; `getText` and `replaceFromText` the whole graph as the indented document the UI's text mode edits — the declarative way to write one; `listTasks` the tasks it has spawned.
- `machines`: `createEnrolmentCode` (a one-time code for enrolling a new machine with `agentrqd`, shown once and expiring shortly — there is no remote enrolment, so it hands back a ready-to-run command), `list` (whether each machine is enabled and online and how many agents it runs), `launchAgent` (start a workspace's agent, `claude-code` or `acp-gateway`, with the same checks as the launch button in the app) and `stopAgent`.
- `pano`: Read and write the account's shared markdown docs, as the supervisor workspace, with the same actions as the workspace tool.
- `help`: How to call the tools above.
### Supervisor Resources & Prompts
Beyond tools, the Supervisor also exposes MCP **resources** — read-only reference material an agent can pull into its own context — and MCP **prompts** — ready-made templates for the workflows a "single brain overseeing many workspaces" is for.
Resources:
- `agentrq://guides/new-workspace`: how to set up a new workspace end-to-end.
- `agentrq://guides/agentrqd-setup`: how to install `agentrqd` and enrol a new machine, with the enrol command templated to this server.
- `agentrq://workspaces/{workspaceId}/tasks/{taskId}`: a task's status, `updatedAt`, `awaitingReply` and its last five text messages, without tool calls.
- `agentrq://workspaces/{workspaceId}/tasks` and `agentrq://tasks/delegated-by/{workspaceId}`: the newest 50 tasks of a workspace, or of those a workspace delegated through `task.create`, as `task.list` returns them.
A client on protocol revision 2026-07-28 can follow the three task resources with `subscriptions/listen`, on the caller's own workspaces, at most 100 per listen. It gets `notifications/resources/updated` when a task's status changes, a message arrives, or its agent asks a question or a permission, instead of polling.
Prompts:
- `new-workspace`: scaffold a new workspace for a stated purpose.
- `setup-agentrqd`: mint an enrolment code and hand back the exact commands to run on a new machine.
- `workspace-status`: a status report across every workspace at once.
### Connecting to Supervisor (Claude Code)
Since the Supervisor uses OAuth2, you can connect it using the following configuration in your `~/.mcp.json`:
```json
{
"mcpServers": {
"agentrq": {
"type": "http",
"url": "https://mcp.agentrq.com/mcp"
}
}
}
```
When you first run Claude with this server, it will provide a link to authenticate via your browser.
## 🧩 Official Extensions
AgentRQ provides official extensions for major AI agent CLI tools to simplify setup and integration with its supervisor MCP. The sub agents MCPs should use their own workspace specific MCP server URLs.
### 🍊 Claude Code
Plugins for Claude Code are published from this repository's own marketplace, each with a skill and pre-configured MCP access:
- [`agentrq`](plugins/claude/agentrq/README.md) — the **supervisor**, talking to the account-level MCP server so one agent can orchestrate work across every workspace you own.
- [`agentrq-custom-supervisor`](plugins/claude/agentrq-custom-supervisor/README.md) — the same supervisor for a **self-hosted** server; it asks for the server's supervisor MCP URL.
- [`agentrq-workspace`](plugins/claude/agentrq-workspace/README.md) — the **workspace agent**, connected to a single workspace's MCP server to work its queue.
**Installation:**
```bash
/plugin marketplace add https://github.com/agentrq/agentrq
/plugin install agentrq@agentrq
/plugin install agentrq-workspace@agentrq
```
> Previously these lived in a separate `agentrq-claude-extension` repository. The marketplace URL is now this repository; if you added the old one, re-add the marketplace at the URL above.
### 🖱️ Cursor
Plugins for Cursor are published from this repository too, with the same skills and MCP access as the Claude Code ones:
- [`agentrq`](plugins/cursor/agentrq/README.md) — the **supervisor**, connected to `https://mcp.agentrq.com/mcp`; it signs in with OAuth and asks nothing at install.
- [`agentrq-workspace`](plugins/cursor/agentrq-workspace/README.md) — the **workspace agent**; its MCP URL is a plugin variable set under **Plugins → Configure** in the Cursor dashboard.
**Installation:** open **Customize** in Cursor's sidebar, find **AgentRQ** and select **Install**.
### ♊ Gemini CLI
The Gemini CLI extension allows you to manage AgentRQ workspaces and tasks directly from your terminal using Google's Gemini models.
> **Tip:** To enable real-time task notifications with Gemini, use the [ACP Gateway](#-acp-gateway-bridge-for-acp-agents).
**Installation:**
```bash
gemini extensions install https://github.com/agentrq/agentrq
```
> Previously this lived in a separate `agentrq-gemini-extension` repository. It now ships from [`plugins/gemini`](plugins/gemini/README.md) in this one; if you installed the old one, uninstall it and install again from the URL above.
### 🐋 DeepSeek Harness
The [`@agentrq/dsh-plugin-agentrq`](plugins/deepseek-harness/README.md) bundle brings AgentRQ into [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness). It bridges the workspace's tools to the model as `mcp__agentrq__*` and holds a supervised workspace session, so tasks assigned to the agent and the human's replies arrive over the MCP channel and land in the live session — no polling, and no leaving the harness to work the queue.
**Installation:**
```bash
npx @deepseek-ai/dsh plugin --profile agentrq-<workspace> add @agentrq/dsh-plugin-agentrq
# pin this workspace's MCP URL in ~/.dsh/profiles/agentrq-<workspace>/cordis.patch.yml
npx @deepseek-ai/dsh --profile agentrq-<workspace>
```
Copy the filled-in commands and config block from **Workspace Settings → Setup → DeepSeek Harness**. A dsh profile serves one workspace and carries its own endpoint, so run one profile per workspace and switching workspaces is switching profiles. Delivery, startup catch-up, and reconnect behavior are configurable; see the [plugin README](plugins/deepseek-harness/README.md).
## 🔌 Integrations
### Slack Integration
AgentRQ supports multi-tenant Slack integration for real-time task creation, thread replies sync, and agent permission requests:
- [Slack Integration Setup & Usage Guide](integrations/slack/README.md)
## 🙌 Contributing
Bug reports go in a [GitHub issue](https://github.com/agentrq/agentrq/issues/new) and feature or architecture ideas go in a short written proposal — see [CONTRIBUTING.md](CONTRIBUTING.md).
## 🤝 Credits
- [AgentRQ](https://agentrq.com) — The official Agent-Human collaboration platform.
- [HasMCP](https://hasmcp.com) — Bridge the Gap Between APIs and Agents.
## 📝 License
AgentRQ is dual-licensed:
- **Open source:** [AGPL-3.0-only](LICENSE).
- **Commercial:** a binary-only [commercial licence](LICENSE-COMMERCIAL) from Contextual, Inc., for proprietary use without the AGPL's obligations. Contact [hi@agentrq.com](mailto:hi@agentrq.com).
The [`agentrqd`](daemon) machine daemon, the desktop and `agentrqd` [install scripts](installers), and the separately published packages — the [`agentrq-ws`](cli/agentrq-ws) command-line client and the plugins under [`plugins/`](plugins) — keep their own Apache-2.0 licence.