HomeFleet
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@HomeFleetlist available nodes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
HomeFleet

Your coding agent, but your other PCs do the heavy lifting.
HomeFleet turns the computers in your home into a fleet your AI coding agent can use. Install a small daemon on each machine, pair them once, and any MCP-capable agent (Claude Code, LM Studio, goose, Cline, ...) gains tools to see every machine in the house and delegate work to them — the delegated work runs entirely on local models, entirely on your LAN; the agent in front can be cloud or local, but the jobs never leave the house.
Status: v0.2 — pre-alpha. The product spine is complete — identity, mTLS transport, LAN discovery, executors, job dispatch, the MCP front door, workspace (git bundle) sync, the single-process daemon assembly, and the
homefleetoperator CLI — and v0.2 adds code-writing delegation: a worker's local model edits code in a throwaway worktree and the change comes back as a reviewablehomefleet/<id>branch in your own repo, landed by a non-forced fetch that never touches your branches or working tree. Both capabilities have run on real hardware, laptop → tower against a local Qwen3.6-35B-A3B: recon returned an accurate architecture summary in ~105 s (rig devlog), and a scoped write task wrote a new test file that landed and passed, end to end in ~169 s (write-delegation rig devlog). v0.2 is a tagged release you install from source, Windows-first; npm packages come later. The Quickstart runs today on a single machine; pairing two real machines is the two-machine demo.
Design history is in the open: the protocol RFC, ADRs, the design doc, and day-by-day devlogs.
Why
Local agents are getting genuinely useful, but a single machine is always the bottleneck — and most of us have more than one computer sitting around. Existing multi-machine tools either pool GPUs to serve one bigger model (exo, GPUStack, llama.cpp RPC) or replace your whole workflow with a new platform (dashboards, kanbans, custom protocols). Nothing lets the agent you already use simply reach over and put your other machines to work.
HomeFleet is that missing thin layer:
MCP-native — appears as
list_nodes/delegate_tasktools inside your existing agent session; results stream back into its contextLAN auto-discovery — daemons find each other via mDNS; pair with a short code, Syncthing-style (device ID = certificate fingerprint, mutual TLS, no CA, no accounts)
Local models by default — worker machines drive tasks with whatever OpenAI-compatible server they have (Ollama, LM Studio, llama.cpp server)
Capability-aware — nodes advertise a validated model catalog; delegate to a specific model or be cleanly denied
Related MCP server: agent-bus-mcp
How it works
┌─────────── Machine A (you) ───────────┐ ┌────────── Machine B (worker) ─────────┐
│ │ │ │
│ Your agent (Claude Code, goose, ...) │ │ homefleetd │
│ │ MCP (localhost) │ │ ├─ executor: minimal agent loop ──► │
│ ▼ │ mTLS │ │ local model (OpenAI-compat API) │
│ homefleetd ◄──── discovery/pairing ──┼──────┼─► ├─ executor: command runner │
│ ├─ list_nodes │ LAN │ └─ workspace cache (git bundles) │
│ └─ delegate_task ────────────────────┼──────┼─► │
└────────────────────────────────────────┘ └────────────────────────────────────────┘One daemon per machine. On your machine it faces your agent as an MCP server; on workers it executes delegated jobs — read-only repo recon driven by a local model, allowlisted commands (test suites, builds), or code-writing tasks that come back as reviewable homefleet/<id> branches (v0.2). Code travels as git bundles; nothing needs a shared remote.
v0.1 scope
Delegate recon tasks ("explore this repo, summarize the auth flow") to a worker's local model
Delegate command runs ("run the test suite") to any paired machine
Live node list with capability info, job status/streaming, cancellation
Windows-first reference setup; code is cross-platform TypeScript
Explicit non-goals for v0.1: code-writing delegation (added in v0.2, below), GUI, cloud relay. See the design doc and roadmap.
v0.2: code-writing delegation
Workers can now write code, not just read it. Configure executors.write on a worker (a catalog defaultModel plus an optional command allowlist) and delegate_task accepts type: "write" tasks. From there the flow is three steps: the worker's local model makes the requested change in an isolated, throwaway worktree of the synced repo; the daemon commits the result as HomeFleet Worker; and the next job_result call lands the change in your clone as a branch named homefleet/<jobId12> — your own branches and working tree are never touched. Review it with the exact command job_result returns (git diff <base>...homefleet/<id>), then merge or delete the branch. An optional allowlisted verifyCommand runs after the commit and reports its outcome without ever failing the job. Config shape, the git-in-allowlist caveat, and the artifact-lifecycle rules are in the configuration reference.
Quickstart
Single machine, dev setup. This is enough to build the daemon, run it, and point an MCP client at it — pairing a second real machine is the two-machine demo below.
You need Node ≥ 20, pnpm 11 (corepack enable is the easiest way), and git;
recon jobs additionally need an OpenAI-compatible model server on the worker
(Ollama, LM Studio, llama.cpp llama-server, ...).
git clone https://github.com/Hugodzl/HomeFleet.git
cd HomeFleet
pnpm install
pnpm build # tsup bundles packages/daemon's three bins to dist/bin/*.jspnpm build is required — the bins are plain, bare-node-runnable ESM files;
there is no tsx/dev-mode path for running them. Invoke them with
node:
node packages/daemon/dist/bin/homefleet.js --help(A bare homefleet/homefleetd shell command is also possible via pnpm link --global, with a caveat — see
packages/daemon/README.md. The node ...
form above always works with no setup, so the rest of this guide uses it.)
Next, scaffold this machine — prints this node's identity and the commands you run yourself in an elevated PowerShell (the daemon never elevates itself):
node packages/daemon/dist/bin/homefleet.js setupRun the printed New-NetFirewallRule commands (TCP for HFP — the daemon's
LAN protocol — plus discovery UDP, scoped to the Private network profile)
in an elevated PowerShell, and check the printed network-profile warning —
the rules only take effect on a Private-profile adapter. They only matter
once you pair a second machine; for this single-machine quickstart they're
safe to defer.
Then config.json goes in the daemon's data directory (by default
%LOCALAPPDATA%\homefleet on Windows; override with HOMEFLEET_DATA_DIR).
For this single-machine quickstart you can skip it and start the daemon
bare — with no config file it runs no executors and syncs no repos;
everything is opt-in. Write one when the machine takes a role. The two
examples below are the two roles — worker and delegator — and one machine
can carry both in the same file. A worker offering a local model plus a
command allowlist, for one repo:
{
"catalog": {
"models": [
{
"id": "qwen3.5-9b",
"contextWindow": 32768,
"endpoint": { "baseUrl": "http://127.0.0.1:8080/v1" }
}
]
},
"executors": {
"agent": { "defaultModel": "qwen3.5-9b" },
"command": { "allowlist": { "pnpm": {} } }
},
"workspace": { "allowedRepoIds": ["homefleet"] }
}(The pre-A2 shape — executors.agent.endpoint: { baseUrl, model, contextWindow } directly, no catalog section — still loads unchanged; the
daemon upgrades it automatically at startup.)
A delegator mapping a local repoId to its checkout, so delegate_task can
sync it to a worker:
{
"repos": [{ "repoId": "homefleet", "path": "D:\\Git\\HomeFleet" }]
}Every key, type, and default is in the configuration reference — cross-check before writing a real config; parsing is strict (an unknown key throws rather than being silently ignored).
Now start the daemon (foreground; stop with Ctrl-C):
node packages/daemon/dist/bin/homefleetd.jsIt prints its device ID, bound ports, and data directory to stderr once it's up. Finally, point an MCP-capable agent at it — for Claude Code:
claude mcp add --transport http homefleet http://127.0.0.1:56372/mcpSee packages/daemon/README.md
for the exact .mcp.json form and the stdio-shim alternative.
Two-machine demo
This is the v0.1 acceptance path: two physical machines, each running
homefleetd, paired, delegating a real job to a real local model. This
exact path ran for real on the reference rig on 2026-07-09 — timings, token
rates, and the Windows MAX_PATH lesson it surfaced are in the
rig devlog. Follow the
Quickstart above through pnpm build on both machines
first, then:
On each machine, run
homefleet setupand run the printed firewall commands in an elevated PowerShell. Then writeconfig.json: give the worker machine anagentand/orcommandexecutor and a non-emptyworkspace.allowedRepoIds; give the delegating machine areposmapping naming the same repoId (see the Quickstart's examples and the configuration reference). Only then starthomefleetd— config is read once at startup, not reloaded.Pair them. On machine B (the worker), open a pairing window:
node packages/daemon/dist/bin/homefleet.js pair beginThis prints a short code. On machine A (the delegator), connect to B using B's LAN address, B's HFP port (
56370by default), and that code:node packages/daemon/dist/bin/homefleet.js pair connect <B-host> <B-hfp-port> <code> [--expect <B-device-id>]Verify. On either machine:
node packages/daemon/dist/bin/homefleet.js nodes # the peer, with live capabilities node packages/daemon/dist/bin/homefleet.js status # this node's own live statusPoint a Claude Code session's MCP at machine A's local daemon (see the Quickstart's
claude mcp addcommand — always the local daemon; MCP never crosses the LAN).Delegate. In that session,
delegate_taska recon prompt naming machine A's configuredrepoIdand machine B's device ID (fromlist_nodes/homefleet nodes) — the repo is bundled and synced to B automatically before the job runs on B's local model. Poll withjob_status/job_result;cancel_jobto abort mid-run.
Recon needs the worker machine to serve a local OpenAI-compatible endpoint
(llama.cpp llama-server, Ollama, LM Studio, ...); command jobs need no
model. The design doc's
reference rig
describes the two-machine setup this project develops against (a Vulkan
llama-server box and a CUDA Ollama box) if you want a concrete starting
point.
Repository layout
Path | What |
| HomeFleet Protocol (HFP) — zod schemas + types; spec in |
|
|
| Command executor + minimal agent loop |
| Versioned RFC-style protocol spec |
| Architecture Decision Records |
| Design documents |
| Operator reference (e.g. |
| Findings, benchmarks, lessons learned along the way |
Development
pnpm install
pnpm build # tsup — required before running any packages/daemon bin
pnpm test # vitest
pnpm typecheck # tsc across packages
pnpm lint # biomeEverything is testable on a single machine — integration tests run multiple daemons as local processes with faked capability profiles.
Roadmap
v0.1 (recon + command delegation) → v0.2 code-writing delegation (branches back — done) → per-node model catalog (A2 — done) → packaging & painless install → dashboard (read-only, then fleet management) → remote model install. The post-v0.2 ordering was approved 2026-07-12 — see the backlog structuring doc; A2 landed ahead of that sequencing.
Longer horizon, not yet sequenced against the above: macOS/Linux polish, multi-node fan-out, model-pool orchestration on the same fabric.
Unordered ideas and known follow-ups live in the backlog.
License
Apache-2.0 — © 2026 Hugo Deziel
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceA local-first MCP server for coordinating parallel AI coding sessions with tools like Claude Code and Codex in a single repository.Last updated2MIT
- Alicense-qualityBmaintenanceA local MCP server that connects AI coding agents (Claude Code, Codex, Cursor, etc.) on the same machine via a shared message bus, enabling them to chat, delegate tasks, and collaborate privately without cloud or internet.Last updated7312MIT
- Flicense-qualityAmaintenanceA local MCP server that connects AI coding agents like Claude, Codex, and Gemini, enabling task routing, cross-model debates, and token-efficient context sharing without external APIs.Last updated8
- Alicense-qualityBmaintenanceDecentralized MCP server enabling AI coding agents to communicate and coordinate asynchronously over LAN via P2P discovery and direct HTTP messaging.Last updatedMIT
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
HiveCompute MCP Server — decentralized inference router for AI agents
Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Hugodzl/HomeFleet'
If you have feedback or need assistance with the MCP directory API, please join our Discord server