opencode-tasksync
v1.3.0
Published
OpenCode plugin for TaskSync — persistent daemon feedback loop for AI coding agents
Maintainers
Readme
opencode-tasksync
OpenCode plugin for TaskSync — human-in-the-loop feedback for AI coding agents.
Your agents call get_feedback, you reply via the web UI or Telegram, they keep working. Connections survive server restarts. Images appear natively in the conversation. Remote mode lets you respond from your phone.
What You Get
get_feedbacktool — Blocks until you submit feedback via the TaskSync web UI or Telegramdaemonagent — Pre-configured agent that maintains a continuous work → feedback → work loop- Agent augmentation — Inject the feedback loop into your existing agents (
ask,build,plan,general, or*) with one config line - Unbreakable connections — SSE with keepalives + automatic reconnection through server restarts and network blips (1s → 15s exponential backoff). The agent never sees transient errors.
- Native images — Attached images injected directly into the LLM conversation via
tool.execute.afterhook. No temp files. - Remote mode — Get Telegram notifications with the agent's context when it's waiting. Quick-reply buttons or free-text responses, delivered straight back to the agent.
- FYI updates — When the agent works for 30+ seconds without asking for feedback, you get a status update on Telegram.
Prerequisites
Start the TaskSync server:
npx tasksync-mcp-httpFor remote mode, also set up a Telegram bot.
Install
Add to ~/.config/opencode/opencode.json:
{
"plugin": ["opencode-tasksync"]
}OpenCode auto-installs npm plugins at startup. Start OpenCode — a daemon agent is immediately available.
Configure
Create ~/.tasksync/config.json (global) or .tasksync/config.json (project):
{
"serverUrl": "http://localhost:3456",
"augmentAgents": ["ask", "build", "plan"],
"overlayStyle": "full"
}| Setting | Default | Description |
|---------|---------|-------------|
| serverUrl | http://localhost:3456 | TaskSync server URL |
| augmentAgents | [] | Agents to augment with feedback loop (["*"] or "*" for wildcard) |
| overlayStyle | "full" | Overlay detail: "full" (120 lines) or "compact" (50 lines) |
augmentAgents accepts either array form (e.g., ["ask", "build"]) or string form (e.g., "ask,build" or "*").
Environment overrides: TASKSYNC_SERVER_URL, TASKSYNC_AUGMENT_AGENTS (comma-separated, e.g. ask,build,plan,general or *), TASKSYNC_OVERLAY_STYLE.
How It Works
- SSE transport —
get_feedbackopens an SSE stream to the server. 30-second keepalives prevent idle timeouts. If the connection drops, the plugin retries silently with exponential backoff. - Agent context capture — The
experimental.text.completehook captures the agent's response text before tool execution. This text is forwarded to Telegram when remote mode is enabled. - Native image injection — The
tool.execute.afterhook injects feedback images asFilePartattachments on the tool result, so the LLM sees them directly. - FYI timer — If the agent writes text but doesn't call
get_feedbackwithin 30 seconds, a status update is sent to your notification channels. - Config injection — The plugin adds a
daemonagent and optionally augments existing agents with the feedback loop protocol.
For augmented agents, the overlay is appended at runtime (via experimental.chat.system.transform) so built-in OpenCode prompts are preserved.
Local Development
cd opencode-plugin
npm install && npm run buildPoint to the local path in opencode.json:
{
"plugin": ["/path/to/tasksync-mcp/opencode-plugin"]
}Rebuild with npm run build after changes, then restart OpenCode.
Full Documentation
See the OpenCode Plugin Guide for agent augmentation, overlay styles, remote mode setup, and troubleshooting.
License
MIT
