Parallel subagents
One lead, many hands. Subagents from every installed agent CLI run at once, and a lead hands work down a tree within the depth and width you set.
ToolsEnabled Fleet
ToolsEnabled Fleet starts subagents that work in parallel, keeps one shared task list and project memory, and follows the rules you set. In Claude Code it is a plugin; Codex, Gemini CLI, OpenCode and other MCP hosts run the same engine as a plain MCP server, Fleet MCP. Fleet runs on your own computer and sends nothing to ToolsEnabled; the agents it starts send your prompts and files to their own providers, as they do when you use them directly.
Claude Code plugin 1.11.4 · Fleet MCP 1.9.2 · Windows candidate 1.10.0-rc.1 · Linux and native Windows x64
Using Codex, Gemini CLI or OpenCode? Install Fleet MCP, the same engine as a plain MCP server.
How it works in Claude Code
Watch the fleet. Each step changes what you see.
01
Ask for subagents. Fleet starts Claude Code, Codex and OpenCode subagents side by side, each on your own sign-in, and lets a lead hand work down a tree, as deep and wide as you allow.
02
Fleet uses the Standard permission level only. Every subagent reads and edits files inside your project folder, with no shell and no web tools, and is refused protected paths. Codex subagents run in Codex's own sandbox with the network off, and OpenCode subagents change files only through Fleet's own file tools.
03
Write a standing rule once, and every subagent and every new session follows it. Only you can add rules, by typing the command yourself. A scheduled or relayed prompt cannot pass for you.
Head Gasket Bench · October 2026
The only two full repairs (18/18) in round 2 came from Fleet with one lead and four workers.
Mean points out of 18: Fleet 1+4, 12.75; Fleet 1+2×2, 11.5; Codex native subagents, 7.5; single agent, 5.75.
Sixteen runs, four per setup, on one deterministic V1 task in Head Gasket Bench 0.1.3, with enforced lead-only finish.
All runs requested gpt-6-luna at max reasoning effort through Codex CLI 0.162.1; requested model labels do not independently attest served weights.
Scores: 18, 18, 3, 12 · Full repairs: 2/4
Scores: 14, 13, 3, 16 · Full repairs: 0/4
Scores: 1, 14, 1, 14 · Full repairs: 0/4
Scores: 1, 3, 16, 3 · Full repairs: 0/4
The benchmark environment and independent scorer agreed on all 16 round-2 scores.
Four repetitions of one task cannot rank the arms.
Team size, delegation instructions, context packaging and tool surfaces differ together, so these configurations do not isolate the effect of transport.
Round 1 had no full repairs in eight runs; FB2 scored 9/18 in the environment and 8/18 with the independent scorer because of a CP07 disagreement.
The rounds use different finish protocols and remain separate exploratory cohorts.
A full repair here means all twelve benchmark checkpoints passed; it does not establish physical repair competence.
Round 2 report · all 16 runsRound 1 report · all eight runsClaim sources
What you get in Claude Code
The pieces that turn a crowd of agents into a team you can manage.
One lead, many hands. Subagents from every installed agent CLI run at once, and a lead hands work down a tree within the depth and width you set.
Agents file, claim and finish tasks in one place, so work is not repeated and nothing is dropped between sessions.
Standing rules live in a ledger only you can write to. Every subagent and every new session reads them before it starts.
Notes and search that persist, so a fresh session picks up what the last one learned.
Choose depth, width, which agent tools and models subagents may use, and what each one gets. Changes come from you.
No account, no telemetry, nothing sent to ToolsEnabled. Fleet keeps its task list, memory and records on your machine. Each agent program it starts uses your own sign-in and sends your prompts and files to its own provider, under that provider’s terms.
The fine print in Claude Code
Fleet MCP’s own limits are listed with its install path.
Fleet never stores a login, never signs in for you, and never pools or switches accounts. Each subagent signs in as its agent CLI does in your terminal.
Fleet itself opens no network connection. The agent tools it starts talk to their own providers, as they do when you run them yourself.
Standard permissions only. A subagent cannot raise its own level, or reach outside the project folder.
Rules and settings come only from a command you type. A prompt that cannot be shown to come from you changes nothing.
Install
Claude Code installs Fleet as a plugin. Codex, Gemini CLI, OpenCode and other MCP hosts start the same engine as a plain MCP server, Fleet MCP. Each path lists what differs.
1Add the repository as a marketplace
$ claude plugin marketplace add ToolsEnabled/toolsenabled-fleet-claude-plugin2Install the plugin
$ claude plugin install toolsenabled-fleet@toolsenabled3Open a project folder in Claude Code, then type this (typing /tef completes it)
> /tefleet setupFleet is set up for ~/your-project at the Standard permission level.
What differs in Claude Code. Subagents get the Standard permission level only: they read and edit files inside your project folder, with no shell and no web tools. The plugin starts Claude Code, Codex and OpenCode subagents.
Your agent starts Fleet MCP over stdio. It adds a shared task list and ledger, memory, coordinated file edits and an optional tree of workers to the agents you already use. The installers run offline; install prerequisites separately.
Verify before extracting or running anything. These are the SHA-256 digests of the 1.9.2 files, also listed in SHA256SUMS. A checksum downloaded beside an archive detects corruption; compare it with the digest on this page before you continue, and stop if they differ.
0416a091c7b3395535db03dff10902fe85a1b1a8904f4a79eea2a42411099534 toolsenabled-host-1.9.2-linux-x64.tar.gz
e000827eb09d0d737d87185ccfdb7551955cf905ede897b4a90e03e61c04fb44 toolsenabled-openshell-1.9.2-linux-x64.tar.gz
5cd6e222cadcd7e9b92920ead9e8550e91ff6be5226505683dc4f69da700e36e toolsenabled-fleet-1.9.2-source.tar.gz1Install on your own machine (host mode). Set archive to where you saved the host archive
# Set archive to the absolute path where you saved the download.
archive=/absolute/path/toolsenabled-host-1.9.2-linux-x64.tar.gz
release_sha256=0416a091c7b3395535db03dff10902fe85a1b1a8904f4a79eea2a42411099534
printf '%s %s\n' "$release_sha256" "$archive" | sha256sum -c -
umask 077
stage=$(mktemp -d)
tar -xzf "$archive" -C "$stage"
bash "$stage/toolsenabled-installer/install.sh" --host \
--archive "$archive" --sha256 "$release_sha256"2Restart your agent sessions, then check what Fleet found
~/.local/toolsenabled-host/toolsenabled-installer/toolsenabled status
~/.local/toolsenabled-host/toolsenabled-installer/toolsenabled agentsThe matching Linux candidate adds mediated reads and writes across permitted local folders for unrestricted standalone sessions. Shared receipts and locks require the same Fleet state root. The saved project still anchors relative paths, and worker permissions remain inherited.
Linux x64 candidate archive · Candidate checksums · Release and installation notes
Run Fleet directly on Windows 10/11 with Node.js 22.19+, Windows PowerShell 5.1 and a local NTFS drive. WSL and Python are not required. Provider CLIs are installed and signed in separately. Workers, shared tasks, memory and strict inherited permissions remain available. In standalone unrestricted sessions, mediated file tools can work across the local folders and drives the lead can access. Confined sessions and vendor plugins keep their narrower limits; shell and native file edits do not join mediation.
$archive = '.\toolsenabled-fleet-1.10.0-rc.1-windows-x64.zip'
$expected = '3aeceec67af1dead062ac41eec85b06d737de22142cdbb49f2b0346ea22136ab'
if ((Get-FileHash $archive -Algorithm SHA256).Hash.ToLowerInvariant() -cne $expected) { throw 'Archive checksum mismatch' }
Expand-Archive $archive -DestinationPath .\fleet-native
Set-Location .\fleet-native\toolsenabled-fleet-1.10.0-rc.1-windows-x64
.\install.cmd --workspace "C:\Users\YOU\Projects\project" --enable-workersSetup prints the exact MCP registration and check/uninstall commands. Add the registration to your client, then open a new session. Omit --enable-workers for coordination only. Close Fleet clients before uninstalling; state and your project are retained.
Windows qualification covers native stdio, private NTFS state, inherited permissions, authenticated worker sessions, Job Object cleanup and installation/removal. Worker protocol fixtures do not establish compatibility or subscription eligibility for every provider CLI. This runs with your Windows account privileges. Vendor plugins keep their separate capability limits.
What differs as a plain MCP server.
toolsenabled setup --print-server-json prints the server entry. You control Fleet from the terminal: toolsenabled ledger, toolsenabled tree, toolsenabled settings and toolsenabled status.The default workspace is ~/work. Append --workspace ABS to the install command to select a project inside your account home, or your account home itself for a global workspace. Hidden top-level home entries, including dotfiles and dot folders, are never part of a workspace. Symbolic-link aliases are refused. For a global workspace, workers start in the lead's working folder, and the archive must sit outside the workspace: keep it outside your home folder or in a hidden folder such as ~/.cache.
Workers are experimental and off by default. To enable them, append --enable-workers at installation. They require Linux 5.3+, usable pidfd_open, process observation/signalling, subreaper support and a passing containment check. Fleet refuses if these are unavailable.
Installation creates a separate runtime and state and registers the Fleet MCP entry with installed described CLIs. Restart your agent sessions afterwards. The command is ~/.local/toolsenabled-host/toolsenabled-installer/toolsenabled; invoke it by its full path because setup does not add it to PATH. Use it for the status and agents commands shown on this page.
Install into an existing Linux x86_64 NVIDIA OpenShell sandbox. OpenShell provides filesystem and network confinement, access approvals and custody of the credentials it manages. Fleet does not install OpenShell or change its policy.
Install Node.js 22.19.0+, Python 3.9+ at /usr/bin/python3, and the agent CLIs you use in the sandbox image first. The documented compatibility baseline is OpenShell 0.1.2 with rootful Docker on Linux x86_64. The WSL 2 route with Docker Desktop's Linux engine is experimental; this is not a claim of qualification for every version or platform.
On the host, put SHA256SUMS and all archives it lists in the same directory, and check that its digests match the ones above. Continue to upload only after verification succeeds; replace YOUR_SANDBOX with your sandbox's name.
sha256sum -c SHA256SUMS
openshell sandbox upload --no-git-ignore YOUR_SANDBOX toolsenabled-openshell-1.9.2-linux-x64.tar.gz /sandbox/Then, inside that sandbox:
cd /sandbox
umask 077
tar -xzf toolsenabled-openshell-1.9.2-linux-x64.tar.gz
bash toolsenabled-installer/install.sh --setup \
--archive /sandbox/toolsenabled-openshell-1.9.2-linux-x64.tar.gz \
--sha256 e000827eb09d0d737d87185ccfdb7551955cf905ede897b4a90e03e61c04fb44
source ~/.local/toolsenabled/env.sh
toolsenabled statusThe installer runs setup for you: it registers Fleet with each installed described CLI, with workers on and every described worker agent allowed. Sign in through each CLI's own flow, then start a new agent session. To change those choices later, run setup again, for example toolsenabled setup --agents --providers AGENT[,AGENT...] --add with ids from toolsenabled agents, or toolsenabled setup --add for no workers. Setup replaces only the entries its own record shows it wrote. In a new shell, source the installed prefix's env.sh again.
The optional toolsenabled-authority service keeps settings, ledger and signed audit outside the sandbox on the machine running OpenShell. Its listener is loopback only, with separate per-agent grants held by OpenShell providers. You configure those providers and policy yourself. The source archive includes the setup guide at adapters/openshell/HOST-OUTSIDE.md.
Without that separate authority, Fleet's record and optional signed audit run as the same sandbox user as the agents. They are not tamper-proof against those agents. The outside authority does not control sandbox file access or anchor the sandbox's audit.
Start your own lead agent and connect Fleet as a stdio MCP server. Workers can use installed agent CLIs, your own API model connections, or local model servers you already run.
toolsenabled agents shows what Fleet found. It uses each CLI's own status command when available and labels unknown sign-in states. Local discovery asks loopback model servers which models they serve.
Google currently documents personal Gemini CLI sign-in, including eligible AI Pro and Ultra accounts. Fleet has not qualified personal-subscription workers, and one reported test of the official CLI rejected an existing individual login. These are compatibility limits, not evidence of a universal end to personal sign-in. Google’s FAQ prohibits OAuth credential harvesting or replay and directs third-party coding agents to API-key or Vertex AI authentication. Use a route permitted for your deployment; do not work around a rejected sign-in. Gemini also turns MCP servers off in untrusted folders; trust your working folder through Gemini’s own controls.
Codex and Gemini CLI do not pass your API keys or tokens to MCP servers unless you allow them. Fleet asks them to pass only the agents' profile folders, so workers use the same profiles as your lead. To let workers use a key from your environment, run setup with --pass-env NAME[,NAME...]. Fleet records the names only; the agent passes the values when it runs.
OpenCode workers need a lead started with its no-prompts setting (level 4), and a role that keeps that level. A headless worker cannot show approval prompts; Fleet refuses to start one if its CLI cannot enforce the inherited limits.
For another MCP client, toolsenabled setup --print-server-json prints the server entry. Fleet installs only Fleet. Install and sign in to agent CLIs through their own instructions, where Fleet will run.
You start your lead however you like. Fleet reads its command line to find the permission level. Every worker inherits that level, reduced by its role and every ancestor. Roles only take permissions away.
Reads, without edits.
The agent's normal approval mode. A worker declines anything that would prompt.
Edits within the agent's inherited limits without asking for each edit.
The lead's no-prompts level, still subject to role limits and any outer sandbox.
If Fleet cannot read the lead's level, it uses level 2. If a worker cannot enforce its inherited level or tool removals, Fleet refuses to start it. Each worker's own sub-agent feature is switched off so delegation stays within Fleet's tree and limits.
Fleet sets no permission of its own, adds no permission grants to agent settings, and blocks nothing you chose for your lead. Its file tools still respect their workspace boundary and protected paths. Host mode supplies no sandbox; in sandbox mode, OpenShell supplies the confinement.
Host mode: close agent sessions and configuration writers. Keep the original approved archive and digest. Verify and extract that same archive into a fresh private stage outside the installed runtime, using the verification and extraction lines above, then run:
bash "$stage/toolsenabled-installer/install.sh" --uninstall \
--archive "$archive" --sha256 "$release_sha256"Repeat the original --prefix, --state-root and --workspace arguments if customized. Removal verifies the matching Fleet entries and pinned runtime; shared state remains.
Sandbox mode: stop agent sessions and Fleet tree hosts using the installation. Inside the sandbox, with the original archive still at /sandbox:
toolsenabled uninstall --keep-state \
--archive /sandbox/toolsenabled-openshell-1.9.2-linux-x64.tar.gz \
--sha256 e000827eb09d0d737d87185ccfdb7551955cf905ede897b4a90e03e61c04fb44Uninstall retains state. Changed files, unknown contents or registrations whose ownership cannot be proven can stop removal. Preserve reported recovery material for review. The source archive includes the full lifecycle guides at docs/HOST-MODE.md and installer/openshell/README.md.
~/.local/share/claude/versions/2.1.302. Fleet did not recognise that as Claude, so every worker it started fell back to level 2, where each file write needs a confirmation that a headless worker cannot show: the write timed out and the worker carried on without writing anything. Fleet now treats claude/versions/<version> as Claude. The level still comes only from the lead's own flags, a file that is not a version number is still not an agent, a lead Fleet cannot see is still level 2, and TOOLSENABLED_LEVEL_CAP still only lowers. Check a tree with each worker's permissionContext: source: ancestor-cli means Fleet found its lead.node through a link to the binary, such as /usr/local/bin/node, every direct model worker was refused with HOST_CONFIG_MISMATCH. Fleet now compares the real paths. A link to any other program is still refused.gpt-daybreak-blue-latest is a worker choice, daybreak, with reasoning depths low through ultra.ENABLE_TOOL_SEARCH=false.--pass-env, and uninstalled. Both used the commands on this page.Fleet never signs in, reads, copies, stores or forwards an agent's sign-in, OAuth token, session token or credential file. It never switches accounts. Agent CLIs keep their own environment and sign-in variables. Discovery uses status commands and can check whether a key name is set without reading its value. Direct model requests use only the API key you explicitly configure for that connection.
State lives in ~/.toolsenabled-host on the host, ~/.toolsenabled in OpenShell, or the folder you choose with --state-root / TOOLSENABLED_STATE_ROOT. It contains the work record, memory, settings, tree records and optional signed audit.
Installation or an explicit setup --add registers Fleet in the agent's MCP list. Fleet uses the documented registration command or edits its own entry, preserving unrelated settings. Project files change only through tools called by your agent or workers, within inherited limits.
Fleet has no telemetry and no update check. Its own network use is limited to configured model endpoints, loopback model discovery and OpenShell's policy service when you use its policy tools. Agents contact their own providers under your accounts and terms. Fleet does not pay for, resell or route that usage.
OpenShell has its own default-on telemetry. NVIDIA describes anonymous operational categories and counts, excluding prompts, credentials, paths, model names and content. Set OPENSHELL_TELEMETRY_ENABLED=false in the gateway's environment to turn it off. For a local user-service gateway, the engine guide gives ~/.config/openshell/gateway.env as an example; restart the gateway when nothing is running. See NVIDIA's telemetry documentation.
A worker tree can consume a lot of a subscription plan. Anthropic says Pro and Max limits assume ordinary, individual usage of Claude Code and the Agent SDK
. See Anthropic's legal and compliance documentation.
OpenAI recommends API key authentication for programmatic Codex CLI workflows
. See OpenAI's authentication documentation. For unattended or heavy work, configure your agents with your own API keys through their own flows, billed to you.
Read every line, run it, change it. Issues and questions are welcome on GitHub.
Current releases: Claude Code plugin 1.11.4 · Release notes · Security policy · Privacy
Fleet MCP 1.9.2 · Source archive · SHA256SUMS · Privacy