An independent journal of software No. 001  ·  Thursday, October 22, 2026
Software, systems and the people building them
Open source · AI agents

Claude Plans. OpenCode Builds.

A new open-source bridge connects the model that thinks to the agent that types. Its most interesting idea isn't the AI. It's the queue.

A dark TaskBridge dashboard showing task counts, a dispatch queue and navigation for tasks, questions, usage and logs.
The dispatch board. TaskBridge keeps its state in SQLite and serves a live view of every task, question and worker log. Screenshot: TaskBridge repository
RepositoryParithosh-Varma/TaskBridge
LicenseApache-2.0
Written inPython 3.12
CreatedOct. 16, 2026

The gap is not intelligence. It is plumbing. Claude can read a repository, reason about a bug and write a plan for fixing it. What it cannot do, on its own, is open the file, run the tests, read the failure and try again. OpenCode can do all of that, but it lives outside Claude's context. The two halves of an agentic workflow have been separated by a surprisingly mundane problem: how does the plan reach the hands?

TaskBridge is a small, opinionated answer. Published on GitHub on Oct. 16 by the developer behind the handle Parithosh-Varma, the project is a Python bridge that lets Claude dispatch coding work to headless OpenCode agents over the Model Context Protocol. Its tagline is blunt: “Claude plans. OpenCode builds.”

It is early: three stars and no open issues at the time of writing. But the design is worth a closer look, because it treats the handoff — not the model — as the hard part.

A queue, not a chat

The first decision is architectural. TaskBridge is not a wrapper around a chat window. When Claude submits a task through one of the 17 MCP tools the bridge exposes, the task is written to a SQLite database. A separate worker polls every 60 seconds, claims a task by priority and age, and runs opencode run inside a per-task git worktree. When the run finishes, the worker writes a structured result back to the queue: a summary, the files touched, the tests run, any open questions, usage metadata and a git-aware diff.

That queue is the point. A chat handoff is ephemeral; a queue is durable. If the worker restarts, the task is still there. If a run fails, it can be retried, optionally on a different model. Tasks can carry dependencies, priorities, timeouts, idempotency keys and tags. submit_batch accepts up to 20 at once, which makes the system feel less like a single assistant and more like a small newsroom of them.

The worktree is the other half of the safety story. Each task gets its own branch and its own checkout, so an agent working on one file cannot quietly change another task's tree. On success the worker commits; on a readonly permission it reverts the writes and reports exactly which files were rolled back. The README is careful to say that no-network and no-shell are prompt-level restrictions, not operating-system sandboxes — an honesty that is rare in agent tooling.

How the handoff works

One task, end to end
01

Claude

Breaks the work down and submits a task over MCP.

Planner
02

MCP bridge

17 tools for submission, batches, questions and status.

Interface
03

SQLite queue

Priority, dependencies, retries and state that survives restarts.

Durable state
04

Worker

Polls every 60 seconds and claims the next eligible task.

60-second cadence
05

Git worktree

An isolated checkout and branch. Commits on success.

Execution

The result returns to Claude — summary, files touched, tests, open questions, diff, usage — written back to the queue, not lost in a terminal.

A conversation in both directions

Most orchestrators stop at dispatch. TaskBridge adds a second channel. If the worker needs an answer, it can pause with a question; the task moves to waiting, a macOS notification appears, and Claude can answer through answer_task. The run then resumes with that answer in context. It is a small feature, but it changes the shape of the interaction: the planner is not just firing off jobs, it is supervising them.

The bridge also runs in reverse. A second MCP server, claude_control_mcp.py, gives OpenCode six tools for asking Claude questions or submitting background jobs. If an API key is present it uses the Anthropic API; otherwise it shells out to claude -p. The result is less a one-way pipeline than a narrow two-lane road between two agents.

“Claude stays the interface. OpenCode does the execution. SQLite is the durable handoff.”

TaskBridge README

Operations, not demos

The unglamorous parts are where the project shows its age in a good way. There is a live dispatch board served at /, with task counts, per-task logs and a model picker that writes to worker_config.json. There is a bearer token for HTTP access, an allowlist for tunnel hosts, an OAuth consent flow and a /health endpoint. There is a 15-minute stale-task reaper, a single-instance lock, a heartbeat file and a restart tool that can recover a dead worker through launchd without touching the queue. The installer offers a Cloudflare quick tunnel by default or ngrok if you have an account, and prints the public URL and token box for Claude Desktop.

That is a lot of operational surface for a project this young, and it suggests the author has actually run it. The README's “Verified” section reads like a test log, not a marketing page: submit, claim, complete; MCP tool discovery; launchd end-to-end recovery; pending task byte-identical after a restart.

The TaskBridge task ledger, showing a table of tasks and their status, along with detail panels and log output.
The ledger. Every task lands in a queue with a priority, dependencies and a state machine; logs stream to per-task files that the dashboard tails. Screenshot: TaskBridge repository
17
MCP tools
Submit, batch, answer, poll, cancel, status.
60s
Worker cadence
A launchd-friendly polling loop.
20
Tasks per batch
One call, many queued jobs.
15m
Stale-task reaper
Failed work does not sit forever.

What it is not

The caveats are equally specific. Scheduling and worker recovery are built around macOS launchd; Linux users need their own timer and lose the restart tool. Token counts are not exposed by the OpenCode CLI, so “usage” reports model, latency, attempts and sandbox status rather than spend. Permission modes are prompt-level. The project is six days old.

Early-days caveat

TaskBridge is a working prototype, not a hardened platform. Treat the permission modes as instructions to the model, not as an operating-system boundary, and supervise any agent with access to a real repository.

None of that undermines the central idea. The agent ecosystem is crowded with planners and executors, and still thin on the layer between them: authentication, state, retries, isolation, observability, a paper trail. TaskBridge is a compact argument that this layer may matter more than another model. It is Apache-2.0, small enough to read, and designed to be forked.

The most interesting thing about it is not that Claude can ask OpenCode to write code. It is that the handoff survives a restart.

Try it

The install is a shell script; it checks dependencies, starts a tunnel and prints the MCP connector details. The repository recommends Python 3.12 and a current OpenCode CLI.

TerminalmacOS · Python 3.12
# clone and install
git clone https://github.com/Parithosh-Varma/TaskBridge.git
cd TaskBridge
./install.sh

Source notes

  • TaskBridge repository and README, accessed Oct. 22, 2026.
  • Repository metadata: created Oct. 16, 2026; Apache-2.0; Python; three stars at the time of writing.
  • The design-system sheet behind this page's typography, color and layout.
  • This page was prepared independently of the TaskBridge project.