
Jules Dispatch
io.github.YuuqqPublished by GitHub account Yuuqqv1.3.2Updated Oct 24, 2026
Batch-dispatch coding tasks to Google Jules: 50 parallel sessions, plan approval, PR collection.
Overview
MCP server that lets an assistant batch-dispatch coding tasks to Google Jules, monitor sessions, approve plans and collect pull requests.
- What you can do
- Create one or many Jules sessions from task objects or YAML/JSON, with bounded parallelism and pacing
- Monitor sessions, wait for completion or action-required states, and inspect plans, activity and PR output
- Approve plans, send follow-up messages and cancel running sessions
- List connected GitHub repositories and recent sessions
- Optionally plan tasks from a one-line goal with a bring-your-own LLM, then dispatch them
- When to use it
- Useful when a change can be split into independent, PR-sized tasks across one or several repositories and you want an assistant to run them in parallel and report back. Also fits workflows that need a human approval gate before risky changes are implemented.
- Requirements
- Runs locally over stdio as an npm package, requiring Node.js 20 or later. Needs a Google Jules API key in JULES_API_KEY and a GitHub repository connected to Jules; JULES_DEFAULT_SOURCE and JULES_DEFAULT_BRANCH can set defaults. The optional planning tools additionally need an LLM key such as LLM_API_KEY.
Installation
In SourceWeft
- Open Jules Dispatch in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
jules-dispatch 🚀
Batch-dispatch tasks to Google Jules in parallel — and use it as an MCP tool inside Claude Code or OpenAI Codex CLI.
[npm version] [CI] [TypeScript] [MCP] [License: MIT]
🌐 Languages: English · 简体中文
🌐 Landing page & interactive docs
https://yuuqq.github.io/jules-dispatch/ — full onboarding guide and MCP integration examples
What Is This?
jules-dispatch is a CLI and an MCP server for the Google Jules API that lets you:
- Dispatch any number of Jules tasks with up to 50 concurrent session creations, optionally paced
- Define tasks as simple YAML files — title, repo, branch, prompt
- Poll for completion and collect generated PR links
- Approve plans, send follow-up messages, cancel runaway sessions, tail live activity
- Plug into Claude Code or Codex as an MCP server — your AI assistant calls Jules as a tool
It turns Jules from a "one task at a time" tool into a massively parallel coding workforce, controlled by either humans on the CLI or other AIs over MCP.
🏗 How It Works
✨ What's New in 1.2 — Optional AI Task Planning (BYO LLM)
Entirely optional. All core commands work without any LLM key. Skip this section if you only want raw dispatch.
Stop hand-writing task YAML. Give jules-dispatch one sentence and let an LLM expand it into N parallel Jules sessions.
Bring your own LLM — works with any OpenAI-compatible /chat/completions endpoint:
Configure via env vars (LLM_API_KEY, LLM_BASE_URL, LLM_MODEL) or per-invocation flags (--llm-key, --llm-base-url, --llm-model). OPENAI_API_KEY and OPENROUTER_API_KEY are also recognised as fallbacks.
✨ What's New in 1.1
- 🧰 MCP server (
jules-dispatch mcp) — 8 always-registered tools, plus 2 optional planning tools when an LLM key is configured, and 7 opt-in legacy aliases - 🤖
--jsonmode — machine-readable output on every command for AI agents and shell pipelines - ✅ Plan approval workflow —
plan,approvecommands +requirePlanApproval: truetask option - 📡 Live tailing —
tail <id>streams activity events as they happen - ❌ Cancel sessions —
cancel <id>aborts runaway runs - 🔍 Direct lookup —
get <id>,status --idsno longer limited to the recent page - 🛡️ Real failure detection — uses session.state, fails fast, distinct exit codes
- ⚡ Smart retries — exponential backoff with jitter, honours
Retry-After - 📥 Stdin input —
dispatch -reads YAML/JSON from a pipe - 🔑
--api-keyflag — pass keys per-invocation, no .env required
✨ Key Features
💡 Five Common Use Cases
jules-dispatch works best when a change can be split into independent, PR-sized tasks. If tasks edit the same files or depend on earlier output, dispatch them in separate waves instead of running them concurrently.
1. Add test coverage across several modules
Suppose the auth, billing, users, and audit modules all need tests. Put one self-contained task file per module in a dedicated directory, then dispatch the directory as a batch:
Each Jules session owns one module. With AUTO_CREATE_PR enabled, the result is a set of focused PRs that can be reviewed and merged independently. A failed task can be retried without restarting the rest.
Why it helps: independent test work runs at the same time without turning into one large, hard-to-review change.
2. Break a large migration into executable tasks
For a goal such as migrating an Express API to Fastify, use the optional LLM planner to identify independent routes, middleware, startup code, and test work:
auto shows the proposed tasks and asks for confirmation before dispatching them. Use plan-tasks instead when you want to save and edit the generated YAML before anything is sent to Jules.
Why it helps: the planner reduces the cost of decomposing a broad goal while keeping the task boundaries visible and reviewable.
3. Roll out the same change across multiple repositories
To add a shared CI check, security baseline, or contribution policy across several Jules-connected repositories, give each task its own source:
Place the task file in a dedicated batch directory and dispatch it with controlled concurrency and launch pacing:
Why it helps: one command coordinates the rollout while preserving a separate session and PR for each repository plus an audit log for the batch.
4. Keep a human approval gate for risky changes
Authentication, authorization, and database migrations often need review before implementation begins. Require Jules to stop after planning:
Inspect the plan, send corrections if needed, approve it, and then continue monitoring:
Why it helps: you keep control of high-impact decisions without giving up delegated execution.
5. Let Claude Code or Codex orchestrate the whole run
After configuring the MCP server, describe the outcome instead of operating each session yourself:
Analyze this repository, split its test gaps into independent tasks, and dispatch them to Jules. Ask me before approving plans or answering feedback requests. When every session finishes, summarize the outcome and PR URL for each task.
The coding assistant can call jules_dispatch, wait with jules_monitor, inspect action-required sessions with jules_interact, and return a final PR summary.
Why it helps: you manage the goal and the important decisions while the assistant handles dispatch, follow-up, and result collection.
🤖 Use Inside Claude Code or Codex (MCP)
The MCP server exposes Jules as a set of tools your coding AI can call directly.
Install for Claude Code
Full setup guide (including GSD integration): docs/MCP-INTEGRATION.md
Add to ~/.config/claude-code/mcp.json (or use claude mcp add):
Then in Claude Code: "Dispatch 5 Jules tasks to add tests to the auth, payments, users, sessions, and audit modules." Claude calls jules_dispatch, monitors them with jules_monitor, and uses jules_interact when it needs full context or PR output.
Install for OpenAI Codex CLI
Add to ~/.codex/config.toml:
Install as an Agent Skill
This repository also ships a lightweight skill wrapper at skills/jules-dispatch/. The skill teaches Claude Code, Codex, or any Agent Skills-compatible host when and how to use the jules-dispatch MCP tools.
For Codex, copy or install the folder as jules-dispatch in your Codex skills directory, then restart Codex:
For Agent Skills-compatible hosts that use a shared skills directory, copy the same folder into that host's skills directory. The skill is only the instruction layer; you still need the MCP server configured with jules-dispatch mcp and a valid JULES_API_KEY.
MCP Tools Exposed
Consolidated tools (recommended)
The server registers 8 tools by default: 3 recommended consolidated tools and 5 utility tools. Two additional planning tools are registered when an LLM key is configured. Seven deprecated aliases are available behind --legacy-tools / JULES_MCP_LEGACY_TOOLS=1 but are not registered by default, so they cost no context unless you need them.
jules_dispatch — Create one or more sessions
Accepts a single task object, an array of tasks, or a YAML/JSON string.
Parameters:
Dispatch uses a continuously replenished worker pool rather than fixed waves: whenever one task finishes creating its session, the next queued task can start. paceMs applies globally across all workers, so consecutive creation starts are separated by at least that interval while result order still matches task order.
jules_monitor — Check status or wait for the next resolution point
Parameters:
Action-required states are AWAITING_PLAN_APPROVAL, AWAITING_USER_FEEDBACK, and PAUSED. When the result includes actionRequired, inspect those sessions with jules_interact, approve the plan or send feedback as appropriate, then call jules_monitor again for the unresolved IDs.
jules_interact — Inspect a session in full context
Returns session details, derived status, the globally latest plan, activity timeline, and PR output in one call. The server scans the complete oldest-first activity feed, then returns the newest activityCount entries in chronological order plus activityTotal for the full feed.
Parameters:
Utility tools
Optional LLM-powered tools (requires LLM key)
Response format
All tools return:
Errors return:
Legacy tools (deprecated aliases, opt-in)
jules_dispatch_task, jules_dispatch_batch, jules_get_session, jules_list_activities, jules_get_plan, jules_status, and jules_wait_for_completion remain functional for compatibility but are not registered by default. Enable them with either:
New integrations should use the consolidated tools.
🚀 Quick Start (Plain CLI)
Prerequisites
- Node.js 20+
- A Google Jules account and API key
- A GitHub repository connected to Jules
1. Install
2. Set up (interactive wizard)
The wizard prompts for your API key, default source, and branch. It writes a .env file.
For CI/scripts (non-interactive):
3. Validate your setup
4. Write a task
5. Dispatch it
6. Batch-dispatch a whole directory
That's it — 6 steps from install to your first PR.
📖 CLI Reference
Global flags
Commands
Exit codes (for shell scripts and agents)
Monitoring error behavior
status reports session or activity lookup failures explicitly as status: "error" and exits nonzero instead of fabricating a Jules failure or trusting a potentially stale state. Polling commands retry only network, rate-limit, and server errors; invalid requests, authentication failures, and missing sessions fail immediately with the affected session ID in the error context.
dispatch examples
batch examples
batch and auto both use the same continuously replenished worker pool. --parallel caps in-flight session creation and --pace-ms sets the global minimum spacing between creation starts; it does not add a delay separately inside each worker.
wait example
tail example
🔄 Session Lifecycle
jules-dispatch tracks every Jules session through its full lifecycle and surfaces each state through the CLI / MCP:
For compatibility, jules-dispatch also normalizes legacy API states: PENDING, RUNNING, AWAITING_USER_INPUT, CANCELLED, and CANCELED. Cancellation is sent with the Jules DELETE /sessions/{id} operation.
📄 Task File Format
Field Reference
YAML example
Multiple tasks in one file (YAML --- separators)
JSON format
JSON array (for batch dispatch via MCP):
🤖 AI-Orchestrated Parallel Development
The killer use case: combine jules-dispatch with Claude Code or Codex.
"I have a Node.js backend that needs to be migrated from Express to Fastify. Analyse the codebase, split the work into independent migration units, and dispatch them all to Jules in parallel using the jules-dispatch MCP tools. Then poll for completion and report back the PR URLs."
With the MCP server installed, your assistant will:
- Analyse your codebase
- Commit and push the target branch, because Jules works from the remote source branch rather than unpushed local changes
- Call
jules_dispatchwith N task definitions - Call
jules_monitorwithwait: true; if action is required, inspect withjules_interact, approve or send feedback, and monitor again - Use
jules_interactto collect terminal context and PR URLs
You get N parallel coding agents orchestrated by one strategic agent, hands-free.
📁 Project Structure
🛠 Development
📜 License
MIT — see LICENSE
Built to make Google Jules actually scale.
Source: README.md at commit 52b152f
Tools
0Version history
1- v1.3.2LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts