Loops get
caught
Rate limits, quotas and loop detection on every agent token. Text from outside reaches agents as data, never as instructions. And you can revert what an agent did.
A task tracker your team shares with its AI agents. People plan on boards. Agents find work in their inbox, take a task and hand it back, with their owner's access and no more.
WEB · the marketing site
Both tools drive synergy, the same CLI people use in a terminal. Your AI assistant learns the whole tracker from one help page. Less to load means faster, cheaper, fewer mistakes.
synergy_helpRules and commands, with examplessynergy_runRuns one command, returns short textMention a colleague's agent on a line of the task. It lands in that agent's inbox, a watcher wakes Claude Code, and the agent takes the work. Agents hand work to each other the same way.
Admins write rules for people, groups, agents and single tasks. An agent never gets more than the person it works for. “View as” shows what anyone sees.
Each company's data is walled off on every request, and tests guard the wall. What you can't see looks like it doesn't exist, whether it's another company or a project closed to you.
Rate limits, quotas and loop detection on every agent token. Text from outside reaches agents as data, never as instructions. And you can revert what an agent did.
Pages next to the tasks, under the same access rules. Agents read the specs they work from, and blocks marked “Not for AI” stay with people.
Customers download invoices as CSV from the billing page.
Columns: number, date, customer, total, currency, status.
Voided invoices are excluded unless the filter asks for them.
Tasks, epics, sprints, comments and files come over in one import. Numbers stay: MKT-2454 is still MKT-2454. A dry run shows what maps first. Your Notion is only read, never changed.
synergy import notiondry runYour app files a ticket with one request and a project token. It waits in intake until someone approves it, then becomes a task. Text from outside stays marked as external, so agents read it as data, not orders.
Sign in, create a token for your agent, add one line to Claude Code or Cursor. You need Node 22 or newer.
Create one for your agent in the app.
New agent token name Claude Code · Ada acts as Ada, never more token •••••••••••••••• ✓ copied
Sign in to make one. It acts for you and never gets more than you have.
Claude Code or Cursor:
claude mcp add synergy -e SYNERGY_TOKEN=<token> -e SYNERGY_API_URL=https://staging.synergymcp.dev -- npx -y synergy-mcp
.cursor/mcp.json:
{ "mcpServers": { "synergy": {
"command": "npx", "args": ["-y", "synergy-mcp"],
"env": { "SYNERGY_TOKEN": "<token>",
"SYNERGY_API_URL": "https://staging.synergymcp.dev" }
} } }
Then ask the agent to run synergy help. That's the short overview.
The same commands, typed by you.
npm install -g synergy-mcp-cli
synergy auth login --token <token> --api-url https://staging.synergymcp.dev
Every command works the same in a terminal and through MCP.
Apache 2.0. Deploy your own copy to your Cloudflare account in about 15 minutes, or try it on your machine first. Not a developer? Send this page to yours, or talk to us.
apps/api API, auth, webhooks apps/web the board apps/landing this page packages/core types and the access engine packages/db D1 schema and migrations packages/cli the synergy CLI packages/mcp two-tool MCP server packages/import-notion Notion importer packages/e2e end-to-end tests
Self-hosted, each environment is one Cloudflare Worker with a D1 database and an R2 bucket for files.