Human-in-the-loop feedback for AI coding agents. Pause your agent mid-task, give it new directions, attach screenshots, and keep it on track — without restarting the conversation.
Reply from anywhere. Enable Remote Mode and get Telegram notifications when your agent needs input. Tap a quick-reply button or type a response from your phone — the agent picks up instantly.
npx tasksync-mcp-httpServer starts on port 3011 (MCP) and 3456 (web UI). Open http://localhost:3456 to see the feedback dashboard.
The opencode-tasksync plugin is the best way to use TaskSync. Add one line to your OpenCode config:
{
"plugin": ["opencode-tasksync"]
}What the plugin gives you that raw MCP can't:
- Zero-config agent behavior — A
daemonagent is injected automatically with the complete feedback loop protocol. No prompt pasting, no manual setup. - Augment any agent — Add feedback loops to your existing
coder,ask,buildagents with one config line. They start callingget_feedbackbetween tasks. - Unbreakable connections — SSE transport with 30s keepalives and automatic reconnection (exponential backoff up to 15s). Server restarts, network blips — the agent never notices.
- Native image support — Attached images appear directly in the LLM conversation via OpenCode's
tool.execute.afterhook. No temp files, no workarounds. - Remote Mode (OpenCode exclusive) — The plugin captures the agent's latest response and forwards it to Telegram. You see what the agent is asking and can reply without touching your laptop.
- FYI status updates — When the agent works for 30+ seconds without asking for feedback, you get a status update on Telegram so you know it's still making progress.
How the plugin makes this possible: It hooks into OpenCode's event system — experimental.text.complete for capturing agent context, tool.execute.after for native image injection, and the config hook for automatic agent/prompt injection. The SSE connection lives inside the tool's execute() function, which is a regular async function that can do anything before returning a string. All of this happens transparently — agents just call get_feedback and get back your response.
See the OpenCode Plugin Guide for configuration, agent augmentation, and remote mode setup.
For VS Code Copilot, Claude Desktop, or any MCP-compatible client — connect directly to the MCP endpoint.
Add to .vscode/mcp.json:
{
"servers": {
"tasksync": {
"url": "http://localhost:3011/mcp"
}
}
}Or for OpenCode in MCP mode (opencode.json):
{
"mcp": {
"tasksync": {
"type": "remote",
"url": "http://localhost:3011/mcp"
}
}
}MCP gives you the tasksync_get_feedback tool with full image support (ImageContent blocks). You'll need to provide the daemon agent prompt manually — see prompts/ for ready-to-use templates.
- Agent calls
get_feedbackand blocks - You see the waiting session in the web UI at
http://localhost:3456 - Type your feedback, attach images if needed, and submit
- Agent receives your response and continues working
- Repeat — the agent stays in a feedback loop until you tell it to stop
The web dashboard at http://localhost:3456 provides:
- Multi-session support — Route feedback to different agent sessions
- Image attachments — Paste, drag-drop, or file-pick images
- Markdown toolbar — Bold, italic, code, lists, headings with keyboard shortcuts
- Live status — See which sessions are waiting, idle, or have queued feedback
- Desktop notifications — Get alerted when an agent is waiting
- Remote mode toggle — Enable/disable Telegram notifications per session
- Session management — Rename, prune stale, delete sessions
See Feedback UI Guide for details.
Get notified on Telegram when agents are waiting for feedback, and reply directly from your phone.
- Create a Telegram bot via @BotFather and copy the token
- Set the token:
# .env file (recommended) TASKSYNC_TELEGRAM_BOT_TOKEN=your-bot-token-here # or CLI flag npx tasksync-mcp-http --telegram-token=your-bot-token-here
- Start the server, then send
/startto your bot in Telegram - Enable remote mode per session via the web UI toggle
When an agent calls get_feedback, you'll receive a Telegram message with the agent's question and quick-reply buttons (Approve / Reject / Continue). Reply with text or tap a button — the feedback goes straight to the agent.
One bot per server. Telegram only allows one process to poll for updates per bot token. If you run multiple TaskSync servers, create a separate bot for each via @BotFather.
| Option | Default | Description |
|---|---|---|
--port=<n> |
3011 |
MCP Streamable HTTP port |
--ui-port=<n> |
3456 |
Feedback UI port |
--telegram-token=<tok> |
— | Telegram bot token for remote notifications |
--heartbeat |
off | Enable legacy [WAITING] timeout mode |
--timeout=<ms> |
3600000 |
Wait timeout (only with --heartbeat) |
--no-ui |
off | Disable embedded feedback UI |
| Variable | Description |
|---|---|
TASKSYNC_TELEGRAM_BOT_TOKEN |
Telegram bot token (alternative to CLI flag) |
TASKSYNC_TELEGRAM_CHAT_IDS |
Pre-authorized Telegram chat IDs (comma-separated) |
TASKSYNC_LOG_LEVEL |
debug, info, warn, error (default: info) |
TASKSYNC_LOG_FILE |
Path to log file (default: stderr) |
A .env file in the project root is loaded automatically. See .env.example for all options.
git clone https://github.com/vikrant82/tasksync-mcp.git
cd tasksync-mcp
npm install && npm run build
node dist/index.js- OpenCode Plugin Guide — Plugin setup, configuration, agent augmentation, remote mode
- API Specification — MCP tools, HTTP endpoints, REST API
- Session Workflow — Session lifecycle and routing
- Feedback UI Guide — Web UI features and controls
- Examples — Curl commands, client configs, multi-session flows
MIT