Repository files navigation

fleet – make your computers feel like one computer

watch the video


fleet is a local tool that magically connects your development machines for ai coding.

one machine is the captain. the others get real .local names, passwordless ssh from the captain, persistent themed tmux sessions, and ai agent integrations.

fleet also gives agents a skill that tells them which machines exist and how to reach them.

fleet only handles the computers. your coding tools decide what work happens on them.

installation

install or update to the latest release:

curl -fsSL https://extoci.lol/fleet | bash

the installer downloads the correct binary for macos or linux, verifies its checksum, and puts fleet in a writable user directory on your PATH when possible.

usage

on the computer you want to use as the captain:

fleet init

on another computer on the same trusted network:

fleet join

back on the captain:

fleet status
ssh machine.local

that ssh connection opens or reattaches to a tmux session named fleet, so closing your laptop does not also close whatever was running on emerald.

the machines get different terminal colors so you can easily tell where you're connected, at a glance.

the bottom-right of the Fleet tmux status bar shows the current whole-machine CPU and memory percentages. The values refresh every few seconds and fall back quietly if the operating system cannot provide a reading.

view a fleet-wide coding-agent usage summary, or include the full daily table:

fleet usage
fleet usage --all

commands

run fleet without arguments or subcommands to view the full list of commands.

how it works

fleet is mostly an opinionated setup around things your computers already know how to do:

  • mdns gives every machine a name like emerald.local
  • ssh gives the captain passwordless access to members
  • tmux keeps work alive between connections
  • shell and tmux colors make it obvious which machine you are using
  • a generated fleet skill makes the machine list readable by compatible coding agents

Fleet does not terminate or relay normal work after setup. ssh emerald.local, scp, sftp, and ordinary remote commands remain normal OpenSSH; Fleet's tiny local ProxyCommand only chooses the LAN or an already-connected Tailscale socket before OpenSSH performs its usual key exchange.

interactive ssh enters the persistent tmux session by default. bypass it once with:

ssh -t emerald.local 'NO_TMUX=1 exec "$SHELL" -l'

fleet doctor --repair refreshes Fleet-owned shell and tmux files after an interrupted update.

trust and privacy

fleet has no Fleet-hosted accounts, control plane, relay, or telemetry. its state and coordination stay local. when Tailscale is already installed and connected, Fleet can use the user's Tailnet for private remote reachability; Tailscale may use its own coordination service or DERP relays. installing fleet, system packages, codex, or claude code can obviously contact their official download sources.

captain discovery uses unauthenticated mdns. fleet join shows you the captain and its fingerprint before trusting it, which is trust-on-first-use for a trusted lan, not magic cryptographic proof that the person next to you is not doing something weird.

after joining, fleet pins machine identities and ssh host keys. registration and leave requests are signed with the pinned fleet identity.

fleet uses the operating system's openssh client for machine-to-machine commands. these commands are non-interactive, use the pinned fleet identity and host keys, send liveness probes, and have hard deadlines so an unreachable machine or stalled remote command cannot hang fleet indefinitely.

requirements

  • macos or debian/ubuntu linux with systemd and apt
  • bash or zsh
  • machines on a trusted local network for initial joining
  • one captain and one fleet per machine

fleet does optional Tailscale routing for members after their normal join or the next fleet update-all, while preserving ordinary ssh <name>.local; it does not install or administer Tailscale. Fleet also does not do task orchestration or Windows. it gives tools access to machines, it does not become the tool using them.

gpt-5.6

fleet was exclusively implemented by gpt-5.6 sol. it would've been impossible without it, due to its extremely impressive computer use capabilities across the network.

fleet was used in the development of fleet.

i wrote more on the blog post

development

most of the build scripts here are just documentation for my agents. i would recommend you ask your agents to explore the codebase, they'll pick up on everything.

About

You and your agents, around your network, automagically.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

fleet – make your computers feel like one computer

watch the video


fleet is a local tool that magically connects your development machines for ai coding.

one machine is the captain. the others get real .local names, passwordless ssh from the captain, persistent themed tmux sessions, and ai agent integrations.

fleet also gives agents a skill that tells them which machines exist and how to reach them.

fleet only handles the computers. your coding tools decide what work happens on them.

installation

install or update to the latest release:

curl -fsSL https://extoci.lol/fleet | bash

the installer downloads the correct binary for macos or linux, verifies its checksum, and puts fleet in a writable user directory on your PATH when possible.

usage

on the computer you want to use as the captain:

fleet init

on another computer on the same trusted network:

fleet join

back on the captain:

fleet status
ssh machine.local

that ssh connection opens or reattaches to a tmux session named fleet, so closing your laptop does not also close whatever was running on emerald.

the machines get different terminal colors so you can easily tell where you're connected, at a glance.

the bottom-right of the Fleet tmux status bar shows the current whole-machine CPU and memory percentages. The values refresh every few seconds and fall back quietly if the operating system cannot provide a reading.

view a fleet-wide coding-agent usage summary, or include the full daily table:

fleet usage
fleet usage --all

commands

run fleet without arguments or subcommands to view the full list of commands.

how it works

fleet is mostly an opinionated setup around things your computers already know how to do:

  • mdns gives every machine a name like emerald.local
  • ssh gives the captain passwordless access to members
  • tmux keeps work alive between connections
  • shell and tmux colors make it obvious which machine you are using
  • a generated fleet skill makes the machine list readable by compatible coding agents

Fleet does not terminate or relay normal work after setup. ssh emerald.local, scp, sftp, and ordinary remote commands remain normal OpenSSH; Fleet's tiny local ProxyCommand only chooses the LAN or an already-connected Tailscale socket before OpenSSH performs its usual key exchange.

interactive ssh enters the persistent tmux session by default. bypass it once with:

ssh -t emerald.local 'NO_TMUX=1 exec "$SHELL" -l'

fleet doctor --repair refreshes Fleet-owned shell and tmux files after an interrupted update.

trust and privacy

fleet has no Fleet-hosted accounts, control plane, relay, or telemetry. its state and coordination stay local. when Tailscale is already installed and connected, Fleet can use the user's Tailnet for private remote reachability; Tailscale may use its own coordination service or DERP relays. installing fleet, system packages, codex, or claude code can obviously contact their official download sources.

captain discovery uses unauthenticated mdns. fleet join shows you the captain and its fingerprint before trusting it, which is trust-on-first-use for a trusted lan, not magic cryptographic proof that the person next to you is not doing something weird.

after joining, fleet pins machine identities and ssh host keys. registration and leave requests are signed with the pinned fleet identity.

fleet uses the operating system's openssh client for machine-to-machine commands. these commands are non-interactive, use the pinned fleet identity and host keys, send liveness probes, and have hard deadlines so an unreachable machine or stalled remote command cannot hang fleet indefinitely.

requirements

  • macos or debian/ubuntu linux with systemd and apt
  • bash or zsh
  • machines on a trusted local network for initial joining
  • one captain and one fleet per machine

fleet does optional Tailscale routing for members after their normal join or the next fleet update-all, while preserving ordinary ssh <name>.local; it does not install or administer Tailscale. Fleet also does not do task orchestration or Windows. it gives tools access to machines, it does not become the tool using them.

gpt-5.6

fleet was exclusively implemented by gpt-5.6 sol. it would've been impossible without it, due to its extremely impressive computer use capabilities across the network.

fleet was used in the development of fleet.

i wrote more on the blog post

development

most of the build scripts here are just documentation for my agents. i would recommend you ask your agents to explore the codebase, they'll pick up on everything.

About

You and your agents, around your network, automagically.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

fleet – make your computers feel like one computer

watch the video


fleet is a local tool that magically connects your development machines for ai coding.

one machine is the captain. the others get real .local names, passwordless ssh from the captain, persistent themed tmux sessions, and ai agent integrations.

fleet also gives agents a skill that tells them which machines exist and how to reach them.

fleet only handles the computers. your coding tools decide what work happens on them.

installation

install or update to the latest release:

curl -fsSL https://extoci.lol/fleet | bash

the installer downloads the correct binary for macos or linux, verifies its checksum, and puts fleet in a writable user directory on your PATH when possible.

usage

on the computer you want to use as the captain:

fleet init

on another computer on the same trusted network:

fleet join

back on the captain:

fleet status
ssh machine.local

that ssh connection opens or reattaches to a tmux session named fleet, so closing your laptop does not also close whatever was running on emerald.

the machines get different terminal colors so you can easily tell where you're connected, at a glance.

the bottom-right of the Fleet tmux status bar shows the current whole-machine CPU and memory percentages. The values refresh every few seconds and fall back quietly if the operating system cannot provide a reading.

view a fleet-wide coding-agent usage summary, or include the full daily table:

fleet usage
fleet usage --all

commands

run fleet without arguments or subcommands to view the full list of commands.

how it works

fleet is mostly an opinionated setup around things your computers already know how to do:

  • mdns gives every machine a name like emerald.local
  • ssh gives the captain passwordless access to members
  • tmux keeps work alive between connections
  • shell and tmux colors make it obvious which machine you are using
  • a generated fleet skill makes the machine list readable by compatible coding agents

Fleet does not terminate or relay normal work after setup. ssh emerald.local, scp, sftp, and ordinary remote commands remain normal OpenSSH; Fleet's tiny local ProxyCommand only chooses the LAN or an already-connected Tailscale socket before OpenSSH performs its usual key exchange.

interactive ssh enters the persistent tmux session by default. bypass it once with:

ssh -t emerald.local 'NO_TMUX=1 exec "$SHELL" -l'

fleet doctor --repair refreshes Fleet-owned shell and tmux files after an interrupted update.

trust and privacy

fleet has no Fleet-hosted accounts, control plane, relay, or telemetry. its state and coordination stay local. when Tailscale is already installed and connected, Fleet can use the user's Tailnet for private remote reachability; Tailscale may use its own coordination service or DERP relays. installing fleet, system packages, codex, or claude code can obviously contact their official download sources.

captain discovery uses unauthenticated mdns. fleet join shows you the captain and its fingerprint before trusting it, which is trust-on-first-use for a trusted lan, not magic cryptographic proof that the person next to you is not doing something weird.

after joining, fleet pins machine identities and ssh host keys. registration and leave requests are signed with the pinned fleet identity.

fleet uses the operating system's openssh client for machine-to-machine commands. these commands are non-interactive, use the pinned fleet identity and host keys, send liveness probes, and have hard deadlines so an unreachable machine or stalled remote command cannot hang fleet indefinitely.

requirements

  • macos or debian/ubuntu linux with systemd and apt
  • bash or zsh
  • machines on a trusted local network for initial joining
  • one captain and one fleet per machine

fleet does optional Tailscale routing for members after their normal join or the next fleet update-all, while preserving ordinary ssh <name>.local; it does not install or administer Tailscale. Fleet also does not do task orchestration or Windows. it gives tools access to machines, it does not become the tool using them.

gpt-5.6

fleet was exclusively implemented by gpt-5.6 sol. it would've been impossible without it, due to its extremely impressive computer use capabilities across the network.

fleet was used in the development of fleet.

i wrote more on the blog post

development

most of the build scripts here are just documentation for my agents. i would recommend you ask your agents to explore the codebase, they'll pick up on everything.

About

You and your agents, around your network, automagically.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

fleet – make your computers feel like one computer

watch the video


fleet is a local tool that magically connects your development machines for ai coding.

one machine is the captain. the others get real .local names, passwordless ssh from the captain, persistent themed tmux sessions, and ai agent integrations.

fleet also gives agents a skill that tells them which machines exist and how to reach them.

fleet only handles the computers. your coding tools decide what work happens on them.

installation

install or update to the latest release:

curl -fsSL https://extoci.lol/fleet | bash

the installer downloads the correct binary for macos or linux, verifies its checksum, and puts fleet in a writable user directory on your PATH when possible.

usage

on the computer you want to use as the captain:

fleet init

on another computer on the same trusted network:

fleet join

back on the captain:

fleet status
ssh machine.local

that ssh connection opens or reattaches to a tmux session named fleet, so closing your laptop does not also close whatever was running on emerald.

the machines get different terminal colors so you can easily tell where you're connected, at a glance.

the bottom-right of the Fleet tmux status bar shows the current whole-machine CPU and memory percentages. The values refresh every few seconds and fall back quietly if the operating system cannot provide a reading.

view a fleet-wide coding-agent usage summary, or include the full daily table:

fleet usage
fleet usage --all

commands

run fleet without arguments or subcommands to view the full list of commands.

how it works

fleet is mostly an opinionated setup around things your computers already know how to do:

  • mdns gives every machine a name like emerald.local
  • ssh gives the captain passwordless access to members
  • tmux keeps work alive between connections
  • shell and tmux colors make it obvious which machine you are using
  • a generated fleet skill makes the machine list readable by compatible coding agents

Fleet does not terminate or relay normal work after setup. ssh emerald.local, scp, sftp, and ordinary remote commands remain normal OpenSSH; Fleet's tiny local ProxyCommand only chooses the LAN or an already-connected Tailscale socket before OpenSSH performs its usual key exchange.

interactive ssh enters the persistent tmux session by default. bypass it once with:

ssh -t emerald.local 'NO_TMUX=1 exec "$SHELL" -l'

fleet doctor --repair refreshes Fleet-owned shell and tmux files after an interrupted update.

trust and privacy

fleet has no Fleet-hosted accounts, control plane, relay, or telemetry. its state and coordination stay local. when Tailscale is already installed and connected, Fleet can use the user's Tailnet for private remote reachability; Tailscale may use its own coordination service or DERP relays. installing fleet, system packages, codex, or claude code can obviously contact their official download sources.

captain discovery uses unauthenticated mdns. fleet join shows you the captain and its fingerprint before trusting it, which is trust-on-first-use for a trusted lan, not magic cryptographic proof that the person next to you is not doing something weird.

after joining, fleet pins machine identities and ssh host keys. registration and leave requests are signed with the pinned fleet identity.

fleet uses the operating system's openssh client for machine-to-machine commands. these commands are non-interactive, use the pinned fleet identity and host keys, send liveness probes, and have hard deadlines so an unreachable machine or stalled remote command cannot hang fleet indefinitely.

requirements

  • macos or debian/ubuntu linux with systemd and apt
  • bash or zsh
  • machines on a trusted local network for initial joining
  • one captain and one fleet per machine

fleet does optional Tailscale routing for members after their normal join or the next fleet update-all, while preserving ordinary ssh <name>.local; it does not install or administer Tailscale. Fleet also does not do task orchestration or Windows. it gives tools access to machines, it does not become the tool using them.

gpt-5.6

fleet was exclusively implemented by gpt-5.6 sol. it would've been impossible without it, due to its extremely impressive computer use capabilities across the network.

fleet was used in the development of fleet.

i wrote more on the blog post

development

most of the build scripts here are just documentation for my agents. i would recommend you ask your agents to explore the codebase, they'll pick up on everything.

About

You and your agents, around your network, automagically.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

fleet – make your computers feel like one computer

watch the video


fleet is a local tool that magically connects your development machines for ai coding.

one machine is the captain. the others get real .local names, passwordless ssh from the captain, persistent themed tmux sessions, and ai agent integrations.

fleet also gives agents a skill that tells them which machines exist and how to reach them.

fleet only handles the computers. your coding tools decide what work happens on them.

installation

install or update to the latest release:

curl -fsSL https://extoci.lol/fleet | bash

the installer downloads the correct binary for macos or linux, verifies its checksum, and puts fleet in a writable user directory on your PATH when possible.

usage

on the computer you want to use as the captain:

fleet init

on another computer on the same trusted network:

fleet join

back on the captain:

fleet status
ssh machine.local

that ssh connection opens or reattaches to a tmux session named fleet, so closing your laptop does not also close whatever was running on emerald.

the machines get different terminal colors so you can easily tell where you're connected, at a glance.

the bottom-right of the Fleet tmux status bar shows the current whole-machine CPU and memory percentages. The values refresh every few seconds and fall back quietly if the operating system cannot provide a reading.

view a fleet-wide coding-agent usage summary, or include the full daily table:

fleet usage
fleet usage --all

commands

run fleet without arguments or subcommands to view the full list of commands.

how it works

fleet is mostly an opinionated setup around things your computers already know how to do:

  • mdns gives every machine a name like emerald.local
  • ssh gives the captain passwordless access to members
  • tmux keeps work alive between connections
  • shell and tmux colors make it obvious which machine you are using
  • a generated fleet skill makes the machine list readable by compatible coding agents

Fleet does not terminate or relay normal work after setup. ssh emerald.local, scp, sftp, and ordinary remote commands remain normal OpenSSH; Fleet's tiny local ProxyCommand only chooses the LAN or an already-connected Tailscale socket before OpenSSH performs its usual key exchange.

interactive ssh enters the persistent tmux session by default. bypass it once with:

ssh -t emerald.local 'NO_TMUX=1 exec "$SHELL" -l'

fleet doctor --repair refreshes Fleet-owned shell and tmux files after an interrupted update.

trust and privacy

fleet has no Fleet-hosted accounts, control plane, relay, or telemetry. its state and coordination stay local. when Tailscale is already installed and connected, Fleet can use the user's Tailnet for private remote reachability; Tailscale may use its own coordination service or DERP relays. installing fleet, system packages, codex, or claude code can obviously contact their official download sources.

captain discovery uses unauthenticated mdns. fleet join shows you the captain and its fingerprint before trusting it, which is trust-on-first-use for a trusted lan, not magic cryptographic proof that the person next to you is not doing something weird.

after joining, fleet pins machine identities and ssh host keys. registration and leave requests are signed with the pinned fleet identity.

fleet uses the operating system's openssh client for machine-to-machine commands. these commands are non-interactive, use the pinned fleet identity and host keys, send liveness probes, and have hard deadlines so an unreachable machine or stalled remote command cannot hang fleet indefinitely.

requirements

  • macos or debian/ubuntu linux with systemd and apt
  • bash or zsh
  • machines on a trusted local network for initial joining
  • one captain and one fleet per machine

fleet does optional Tailscale routing for members after their normal join or the next fleet update-all, while preserving ordinary ssh <name>.local; it does not install or administer Tailscale. Fleet also does not do task orchestration or Windows. it gives tools access to machines, it does not become the tool using them.

gpt-5.6

fleet was exclusively implemented by gpt-5.6 sol. it would've been impossible without it, due to its extremely impressive computer use capabilities across the network.

fleet was used in the development of fleet.

i wrote more on the blog post

development

most of the build scripts here are just documentation for my agents. i would recommend you ask your agents to explore the codebase, they'll pick up on everything.

About

You and your agents, around your network, automagically.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

fleet – make your computers feel like one computer

watch the video


fleet is a local tool that magically connects your development machines for ai coding.

one machine is the captain. the others get real .local names, passwordless ssh from the captain, persistent themed tmux sessions, and ai agent integrations.

fleet also gives agents a skill that tells them which machines exist and how to reach them.

fleet only handles the computers. your coding tools decide what work happens on them.

installation

install or update to the latest release:

curl -fsSL https://extoci.lol/fleet | bash

the installer downloads the correct binary for macos or linux, verifies its checksum, and puts fleet in a writable user directory on your PATH when possible.

usage

on the computer you want to use as the captain:

fleet init

on another computer on the same trusted network:

fleet join

back on the captain:

fleet status
ssh machine.local

that ssh connection opens or reattaches to a tmux session named fleet, so closing your laptop does not also close whatever was running on emerald.

the machines get different terminal colors so you can easily tell where you're connected, at a glance.

the bottom-right of the Fleet tmux status bar shows the current whole-machine CPU and memory percentages. The values refresh every few seconds and fall back quietly if the operating system cannot provide a reading.

view a fleet-wide coding-agent usage summary, or include the full daily table:

fleet usage
fleet usage --all

commands

run fleet without arguments or subcommands to view the full list of commands.

how it works

fleet is mostly an opinionated setup around things your computers already know how to do:

  • mdns gives every machine a name like emerald.local
  • ssh gives the captain passwordless access to members
  • tmux keeps work alive between connections
  • shell and tmux colors make it obvious which machine you are using
  • a generated fleet skill makes the machine list readable by compatible coding agents

Fleet does not terminate or relay normal work after setup. ssh emerald.local, scp, sftp, and ordinary remote commands remain normal OpenSSH; Fleet's tiny local ProxyCommand only chooses the LAN or an already-connected Tailscale socket before OpenSSH performs its usual key exchange.

interactive ssh enters the persistent tmux session by default. bypass it once with:

ssh -t emerald.local 'NO_TMUX=1 exec "$SHELL" -l'

fleet doctor --repair refreshes Fleet-owned shell and tmux files after an interrupted update.

trust and privacy

fleet has no Fleet-hosted accounts, control plane, relay, or telemetry. its state and coordination stay local. when Tailscale is already installed and connected, Fleet can use the user's Tailnet for private remote reachability; Tailscale may use its own coordination service or DERP relays. installing fleet, system packages, codex, or claude code can obviously contact their official download sources.

captain discovery uses unauthenticated mdns. fleet join shows you the captain and its fingerprint before trusting it, which is trust-on-first-use for a trusted lan, not magic cryptographic proof that the person next to you is not doing something weird.

after joining, fleet pins machine identities and ssh host keys. registration and leave requests are signed with the pinned fleet identity.

fleet uses the operating system's openssh client for machine-to-machine commands. these commands are non-interactive, use the pinned fleet identity and host keys, send liveness probes, and have hard deadlines so an unreachable machine or stalled remote command cannot hang fleet indefinitely.

requirements

  • macos or debian/ubuntu linux with systemd and apt
  • bash or zsh
  • machines on a trusted local network for initial joining
  • one captain and one fleet per machine

fleet does optional Tailscale routing for members after their normal join or the next fleet update-all, while preserving ordinary ssh <name>.local; it does not install or administer Tailscale. Fleet also does not do task orchestration or Windows. it gives tools access to machines, it does not become the tool using them.

gpt-5.6

fleet was exclusively implemented by gpt-5.6 sol. it would've been impossible without it, due to its extremely impressive computer use capabilities across the network.

fleet was used in the development of fleet.

i wrote more on the blog post

development

most of the build scripts here are just documentation for my agents. i would recommend you ask your agents to explore the codebase, they'll pick up on everything.

About

You and your agents, around your network, automagically.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

fleet – make your computers feel like one computer

watch the video


fleet is a local tool that magically connects your development machines for ai coding.

one machine is the captain. the others get real .local names, passwordless ssh from the captain, persistent themed tmux sessions, and ai agent integrations.

fleet also gives agents a skill that tells them which machines exist and how to reach them.

fleet only handles the computers. your coding tools decide what work happens on them.

installation

install or update to the latest release:

curl -fsSL https://extoci.lol/fleet | bash

the installer downloads the correct binary for macos or linux, verifies its checksum, and puts fleet in a writable user directory on your PATH when possible.

usage

on the computer you want to use as the captain:

fleet init

on another computer on the same trusted network:

fleet join

back on the captain:

fleet status
ssh machine.local

that ssh connection opens or reattaches to a tmux session named fleet, so closing your laptop does not also close whatever was running on emerald.

the machines get different terminal colors so you can easily tell where you're connected, at a glance.

the bottom-right of the Fleet tmux status bar shows the current whole-machine CPU and memory percentages. The values refresh every few seconds and fall back quietly if the operating system cannot provide a reading.

view a fleet-wide coding-agent usage summary, or include the full daily table:

fleet usage
fleet usage --all

commands

run fleet without arguments or subcommands to view the full list of commands.

how it works

fleet is mostly an opinionated setup around things your computers already know how to do:

  • mdns gives every machine a name like emerald.local
  • ssh gives the captain passwordless access to members
  • tmux keeps work alive between connections
  • shell and tmux colors make it obvious which machine you are using
  • a generated fleet skill makes the machine list readable by compatible coding agents

Fleet does not terminate or relay normal work after setup. ssh emerald.local, scp, sftp, and ordinary remote commands remain normal OpenSSH; Fleet's tiny local ProxyCommand only chooses the LAN or an already-connected Tailscale socket before OpenSSH performs its usual key exchange.

interactive ssh enters the persistent tmux session by default. bypass it once with:

ssh -t emerald.local 'NO_TMUX=1 exec "$SHELL" -l'

fleet doctor --repair refreshes Fleet-owned shell and tmux files after an interrupted update.

trust and privacy

fleet has no Fleet-hosted accounts, control plane, relay, or telemetry. its state and coordination stay local. when Tailscale is already installed and connected, Fleet can use the user's Tailnet for private remote reachability; Tailscale may use its own coordination service or DERP relays. installing fleet, system packages, codex, or claude code can obviously contact their official download sources.

captain discovery uses unauthenticated mdns. fleet join shows you the captain and its fingerprint before trusting it, which is trust-on-first-use for a trusted lan, not magic cryptographic proof that the person next to you is not doing something weird.

after joining, fleet pins machine identities and ssh host keys. registration and leave requests are signed with the pinned fleet identity.

fleet uses the operating system's openssh client for machine-to-machine commands. these commands are non-interactive, use the pinned fleet identity and host keys, send liveness probes, and have hard deadlines so an unreachable machine or stalled remote command cannot hang fleet indefinitely.

requirements

  • macos or debian/ubuntu linux with systemd and apt
  • bash or zsh
  • machines on a trusted local network for initial joining
  • one captain and one fleet per machine

fleet does optional Tailscale routing for members after their normal join or the next fleet update-all, while preserving ordinary ssh <name>.local; it does not install or administer Tailscale. Fleet also does not do task orchestration or Windows. it gives tools access to machines, it does not become the tool using them.

gpt-5.6

fleet was exclusively implemented by gpt-5.6 sol. it would've been impossible without it, due to its extremely impressive computer use capabilities across the network.

fleet was used in the development of fleet.

i wrote more on the blog post

development

most of the build scripts here are just documentation for my agents. i would recommend you ask your agents to explore the codebase, they'll pick up on everything.

About

You and your agents, around your network, automagically.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

fleet – make your computers feel like one computer

watch the video


fleet is a local tool that magically connects your development machines for ai coding.

one machine is the captain. the others get real .local names, passwordless ssh from the captain, persistent themed tmux sessions, and ai agent integrations.

fleet also gives agents a skill that tells them which machines exist and how to reach them.

fleet only handles the computers. your coding tools decide what work happens on them.

installation

install or update to the latest release:

curl -fsSL https://extoci.lol/fleet | bash

the installer downloads the correct binary for macos or linux, verifies its checksum, and puts fleet in a writable user directory on your PATH when possible.

usage

on the computer you want to use as the captain:

fleet init

on another computer on the same trusted network:

fleet join

back on the captain:

fleet status
ssh machine.local

that ssh connection opens or reattaches to a tmux session named fleet, so closing your laptop does not also close whatever was running on emerald.

the machines get different terminal colors so you can easily tell where you're connected, at a glance.

the bottom-right of the Fleet tmux status bar shows the current whole-machine CPU and memory percentages. The values refresh every few seconds and fall back quietly if the operating system cannot provide a reading.

view a fleet-wide coding-agent usage summary, or include the full daily table:

fleet usage
fleet usage --all

commands

run fleet without arguments or subcommands to view the full list of commands.

how it works

fleet is mostly an opinionated setup around things your computers already know how to do:

  • mdns gives every machine a name like emerald.local
  • ssh gives the captain passwordless access to members
  • tmux keeps work alive between connections
  • shell and tmux colors make it obvious which machine you are using
  • a generated fleet skill makes the machine list readable by compatible coding agents

Fleet does not terminate or relay normal work after setup. ssh emerald.local, scp, sftp, and ordinary remote commands remain normal OpenSSH; Fleet's tiny local ProxyCommand only chooses the LAN or an already-connected Tailscale socket before OpenSSH performs its usual key exchange.

interactive ssh enters the persistent tmux session by default. bypass it once with:

ssh -t emerald.local 'NO_TMUX=1 exec "$SHELL" -l'

fleet doctor --repair refreshes Fleet-owned shell and tmux files after an interrupted update.

trust and privacy

fleet has no Fleet-hosted accounts, control plane, relay, or telemetry. its state and coordination stay local. when Tailscale is already installed and connected, Fleet can use the user's Tailnet for private remote reachability; Tailscale may use its own coordination service or DERP relays. installing fleet, system packages, codex, or claude code can obviously contact their official download sources.

captain discovery uses unauthenticated mdns. fleet join shows you the captain and its fingerprint before trusting it, which is trust-on-first-use for a trusted lan, not magic cryptographic proof that the person next to you is not doing something weird.

after joining, fleet pins machine identities and ssh host keys. registration and leave requests are signed with the pinned fleet identity.

fleet uses the operating system's openssh client for machine-to-machine commands. these commands are non-interactive, use the pinned fleet identity and host keys, send liveness probes, and have hard deadlines so an unreachable machine or stalled remote command cannot hang fleet indefinitely.

requirements

  • macos or debian/ubuntu linux with systemd and apt
  • bash or zsh
  • machines on a trusted local network for initial joining
  • one captain and one fleet per machine

fleet does optional Tailscale routing for members after their normal join or the next fleet update-all, while preserving ordinary ssh <name>.local; it does not install or administer Tailscale. Fleet also does not do task orchestration or Windows. it gives tools access to machines, it does not become the tool using them.

gpt-5.6

fleet was exclusively implemented by gpt-5.6 sol. it would've been impossible without it, due to its extremely impressive computer use capabilities across the network.

fleet was used in the development of fleet.

i wrote more on the blog post

development

most of the build scripts here are just documentation for my agents. i would recommend you ask your agents to explore the codebase, they'll pick up on everything.

About

You and your agents, around your network, automagically.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages