关于 fleet
fleet 让编码 Agent 和命令行用户检查并使用可通过 SSH 访问的机器,包括 GPU 空闲情况、任务、软件和已提供服务的模型。它无需在远程机器上安装程序或服务即可探测信息,也为无法运行命令的应用提供 MCP 服务。
主要功能
- 01通过 SSH 汇总机器信息
- 02查看 GPU 空闲情况和运行任务
- 03检查软件、模型和数据目录
- 04发现 SSH 配置及 tailnet 机器
- 05通过 fleet 命令行运行命令
适用场景
- 01选择有空闲 GPU 的机器
- 02查找运行模型服务的主机
- 03在 Linux 机器上运行测试
- 04定位数据集并查看可用磁盘空间
MCP 相关
fleet 为无法运行命令的桌面应用和编辑器提供 MCP 服务,向这些客户端开放相同的 fleet 命令。能够运行命令的 Agent 则使用 skill。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
fleet — 让你的编码 Agent 使用你拥有的每台机器
Claude Code、Codex 和 Gemini 只能看到一台机器:它们运行的那台。
fleet 能让它们看到你所有的机器——每块 GPU 及其运行情况、正在提供服务的模型、已安装的软件,以及模型和数据所在的位置。
无需账号,无需云服务,无需在你添加的机器上安装任何内容,也无需交出密钥:fleet 使用你已有的 SSH,完全按照你平时的方式登录。
问题所在
让 Agent 训练模型,它却在你的笔记本电脑上启动——与此同时,隔壁房间的 4090 闲置着,而你租用的 A100 正在按小时计费。它看不到的东西,就无法使用。
- 你的 Agent 被困在一台机器上。 它根本不知道你还有其他机器。
- 手动查找空闲 GPU。 通过 SSH 登录五台主机,运行
nvidia-smi,然后在脑子里比较。 - 它看不到正在运行的任务,也看不到机器上已有的东西——那块显卡上运行着谁的任务、哪台机器已经在提供 Llama 3、数据集存放在哪里——所以它会重复下载和安装。
开始使用:询问你的 Agent
在你工作的机器上,将以下内容粘贴到 Claude Code、Codex、Gemini CLI 或任何能够运行命令的 Agent 中:
Install fleet from https://github.com/sinolion/fleet
Agent:步骤见 INSTALL.md。
这就是全部设置。fleet 只需在这台机器上安装一次,你在这里使用的每个受支持的 Agent 都会了解它——不只你询问的那个。从现在起,你只需用日常语言描述需求,无需记住任何命令。
然后添加你的机器
告诉 Agent 你如何连接到某台机器——你已经在使用的 SSH 命令就足够了——或者让它查找你的 ~/.ssh/config 和 tailnet 中已经可以访问的机器:
你: 添加我的 GPU 服务器,
ssh [email protected]Agent: 已添加为
gpu-box:2× RTX 4090,均处于空闲状态,剩余 46 GB。已准备就绪。
无论是什么机器,只需用一句话说明:
| 机器 | 你告诉 Agent 的内容 |
|---|---|
| 已经可以通过 SSH 登录的服务器 | “添加 ssh [email protected]”——fleet 会使用你的密钥,按你平时的方式登录 |
| 需要使用特定密钥文件连接的机器 | “添加 ssh -i ~/.ssh/my_key [email protected]”——或者使用 ~/.ssh/config 中的 Host |
| tailnet 上的机器 | “查找我的机器”——它会列出 SSH 配置中的主机和 tailnet 机器,并添加你选中的机器 |
| 新租用的机器(vast.ai、RunPod、AutoDL) | “添加 ssh -p 40001 [email protected],每小时收费 $1.89”——密钥已在你的服务提供商账号中 |
| 只接受密码的机器 | “添加它”——fleet 会提供 ssh-copy-id,你只需在 ssh 中输入一次密码,随后你的密钥就会配置到机器上 |
| 无法登录的机器 | “为什么无法访问 NAS?”——fleet doctor 会指出需要修复的唯一问题 |
你添加的机器上无需安装任何内容:它们只需运行 Linux、macOS 或 Windows,并支持 SSH。fleet 会探测每台机器的 GPU、内存和磁盘,并持续更新这些信息。
然后让 Agent 来选择
描述要做的工作;Agent 会找到合适的机器。它会检查每台机器的配置,以及 当前有哪些资源空闲,因此不会把任务派给正忙着的显卡:
你: 在有空闲 24 GB 显卡的机器上训练
train.pyAgent:
rtx4090有 23.1 GB 可用显存,GPU 处于空闲状态;a100-spot也空闲,但费用为 $1.89/小时。我会在rtx4090上开始运行,并将日志写入train.log。
| 你说 | Agent 如何查找 |
|---|---|
| “现在有哪些资源空闲?” | 检查每台机器,并列出空闲的机器 |
| “帮我找一台有 24 GB 显卡的机器” | 根据机器的配置匹配——NVIDIA 或 AMD、显存、核心数、RAM,而非机器名称 |
| “在 Linux 机器上运行测试” | 找到运行 Linux 的机器,并带回结果 |
| “哪些资源正在产生费用?” | 标出闲置的付费租用机器,并显示每小时价格 |
| “谁在使用 GPU?” | 列出每张显卡上的所有任务——用户、显存用量、运行时长和命令 |
| “Llama 3 已经在哪台机器上提供服务?” | 列出每个模型服务的模型,以及访问它所需的 URL 或 ssh 隧道 |
| “哪台机器装有 torch 2.5 和 CUDA 12?” | 查看每台机器的 CUDA 或 ROCm、Python 环境和软件包版本 |
| “把数据集下载到存放数据集的目录” | 查找该机器指定的数据集目录,以及剩余空间 |
密钥和密码绝不会进入对话;任何不可逆操作都会等待你确认。
只在你使用 Agent 的地方安装 fleet。 你添加的机器只需支持 SSH。只有在其他机器上也运行 Agent 时,才需要在那里安装 fleet;它在任何地方的运行方式都相同,无需加入或同步。在那里,fleet ls --discover 会列出 ssh 配置和 tailnet 中的机器;你手动添加的机器则保存在一个文件中,可与 dotfiles 一同分享。
无法运行命令的应用?
桌面应用和编辑器只需点一下即可使用 fleet;fleet 会作为 MCP 服务运行:
| 应用 | 安装 |
|---|---|
| Claude Desktop | 从最新版本打开 fleet.mcpb |
| Cursor | |
| VS Code |
此外还提供 Claude Code、Codex、Copilot CLI 和 Gemini CLI 的插件,以及 OpenCode、Amp、 Windsurf、Cline、Zed、Qwen Code、Goose、Kiro、Hermes 的插件——总计支持 35+ 个 Agent: 查看所有 Agent →
安全可靠
- 无需在你的机器上安装任何东西。 fleet 通过一个脚本和一个 SSH 连接进行探测,支持 Linux、macOS 或 Windows。NAS 或新租用的机器都能直接使用。它在机器上留下的少数文件列在 fleet 会修改什么中。
- 不交出密钥,不管理访问权限。 fleet 完全按照你的方式连接——使用你的 ssh
配置、密钥和 Agent、Tailscale SSH、租用服务提供商的密钥——并且不会在任何地方写入密钥。谁可以访问什么,仍由你在原有位置决定。机器拒绝连接时,
fleet doctor会告诉你如何修复;fleet 绝不会擅自处理。 - 没有密码。 fleet 从不索要或存储密码,Agent 也看不到任何凭据。GPU 任务命令行中的秘密会在显示给任何人之前被隐藏。
- Agent 会询问,不会猜测。 它会询问你指的是哪台机器;不可逆命令由你决定;也不会在其他人正在使用的 GPU 上启动任务。
- 不会向外发送数据。 除了安装和更新自身,fleet 只与你的机器通信,不会与其他对象通信:没有账户、遥测或更新检查。发现漏洞?SECURITY.md 说明了如何私下报告。
更喜欢使用命令行?
Agent 执行的所有操作都是普通的 fleet 命令。要自行安装 fleet,请在你工作的机器上运行以下命令(你让 Agent 执行时,它也会运行此命令):
curl -LsSf https://raw.githubusercontent.com/sinolion/fleet/main/install.sh | sh
Windows:powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/sinolion/fleet/main/install.ps1 | iex"
然后亲自操作:
fleet ls # every machine, with what is free right now
fleet ls --tag cuda --tag vram-24g # by capability: NVIDIA, a card of 24 GB or more
fleet ls --tag rocm # every AMD machine
fleet top # live view, like htop for the whole fleet
fleet show gpu-box # one machine in detail: jobs, software, models, folders
fleet ps # every job on every GPU, and which GPUs are idle
fleet models # every model being served, and how to reach it
fleet edit gpu-box --path models=/data/models # where that machine keeps its models
fleet ssh gpu-box -- nvidia-smi # run something there
fleet add "ssh [email protected]" # add a machine
fleet ls --discover # machines in your ssh config and on your tailnet
fleet doctor nas # why a machine will not let you in, and the fix
机器存放模型、数据集和媒体文件的位置会写在机器本身的 machine.yaml 中(fleet edit NAME --path models=/data/models)。查看该机器的所有人都会看到相同的信息;每次探测都会一并显示文件夹大小和剩余空间。
来自 vast.ai、RunPod 或 AutoDL 的租用机也会显示价格(fleet edit a100 --cost 1.89)、整个集群的费用消耗速率,以及租用机处于空闲状态时的警报。在使用 Tailscale、ZeroTier 或 WireGuard 时,fleet 只需要一个可路由到的地址。
fleet 的对比
fleet 面向你已有的机器。它与负责启动新机器的工具互为补充。
ssh + nvidia-smi | nvitop / gpustat | all-smi / gpuwho | SkyPilot / dstack | fleet | |
|---|---|---|---|---|---|
| 在一个视图中查看所有机器 | ✗ | ✗ 一台机器 | ✓ | ✓ 它管理的机器 | ✓ |
| 专为编码 Agent 打造(skill / MCP) | ✗ | ✗ | ✗ | 部分支持 | ✓ |
| 目标机器上无需安装任何内容 | ✓ | ✗ | gpuwho ✓,all-smi ✗ | ✗ | ✓ |
| 任务、提供服务的模型、软件、数据文件夹 | ✗ | 任务、一台机器 | 任务 | ✗ | ✓ |
| 支持 NVIDIA、AMD 和 Apple GPU | NVIDIA | NVIDIA | all-smi ✓ | ✓ | ✓ |
| 启动新的云端 VM | ✗ | ✗ | ✗ | ✓ | ✗ |
| 历史记录、发送给你的警报 | ✗ | ✗ | all-smi ✓ | 部分支持 | ✗ 按需提醒 |
何时使用其他工具。 要按需以最低价格租用 GPU,请使用 SkyPilot 或 dstack:它们会启动和停止机器,而 fleet 不会。要在大型集群上收集数周的指标并发送告警,请使用 DCGM、Prometheus 和 Grafana。要查看包含多种加速器(Gaudi、NPU)的实时仪表板,请使用 all-smi。fleet 面向你已有的机器,也让你的 Agent 能够使用这些机器。
为什么不直接使用 Tailscale、Ansible 或 ~/.ssh/config? 将它们与 fleet 一起使用,而不是用它们取代 fleet。Tailscale 负责连接你的机器,fleet 可以通过它正常运行,但它不会告诉你的 Agent 哪台机器有空闲 GPU。Ansible 会根据你编写的 playbook 更改机器配置,但并不知道眼下哪些机器正忙。~/.ssh/config 用于命名主机,而 fleet 会读取它。fleet 位于两者之间:它以 Agent 无需你介入即可使用的形式,呈现你拥有哪些机器、机器上有哪些空闲资源,以及正在运行和已安装的内容。
常见问题
设置
我需要在每台机器上安装 fleet 吗?
不需要。只需在你使用 fleet 的地方安装:你工作的机器,以及其他运行 Agent 的机器。你只会使用的机器——GPU 服务机、租用机、NAS——只需要 SSH,无需安装其他内容。
我需要使用 Tailscale 吗?
不需要。fleet 会使用 SSH 能连接到你的机器的任何网络:局域网、VPN、跳板机,或租赁机器的公网端口。如果你使用 Tailscale,`fleet ls --discover` 会为你查找 tailnet 中的机器,而由 Tailscale SSH 决定谁可以登录到哪里——fleet 只负责连接。请参阅[连接到你的机器](docs/guides/reaching-machines.md)。我在两台机器上运行 fleet。它们会共享什么内容吗?
它们不需要共享任何内容:每台机器都会查看自己的 SSH 能连接到哪些机器,而机器对自身信息的描述——成本、标签、模型所在位置——都保存在该机器上,因此两边读取的内容相同。你手动添加的机器保存在一个文件中:machines.yaml(运行 fleet paths 可查看位置);你可以复制这个文件,或将它保存在 dotfiles 中。
我在同一台机器上使用 Claude Code 和 Codex(还有其他工具)。可以吗?
可以——这正是常见用法。每台机器只需安装一次 fleet:一条命令、一份机器列表。每个 Agent 只需获取一个指向 fleet 的小型 skill 或 MCP 配置,因此 Claude Code、Codex、Gemini CLI 和桌面应用都能看到相同的机器,并可同时使用它们。之后安装新的 Agent?让一个已配置 fleet 的 Agent 运行 fleet setup 即可。
我的 Agent 实际上会获得什么?
能够运行命令的 Agent(Claude Code、Codex、Gemini CLI、Copilot CLI、OpenCode,……)会获得一个 skill——其中包含告诉它们如何使用 fleet 命令的文本;只有任务需要机器时才会产生开销。无法运行命令的应用(Claude Desktop、Cursor、VS Code,……)会获得一个 MCP 服务,由它代为运行相同的命令。请参阅 Agent。安装完成后,请启动新会话,让 Agent 加载它。
安全性
fleet 会存储我的密码吗?我的 Agent 能看到我的密钥吗?
两者都不会。fleet 没有自己的密钥,也绝不会处理密码:它会像你一样运行 ssh。对于只接受密码的机器,它会在你的终端中提供 ssh-copy-id,让你只需一次在 ssh 本身中输入密码。Agent 运行 fleet ssh NAME,绝不会看到密钥或密码;但它可能会看到机器的地址,因为 fleet show 会显示该地址。
fleet 会在我添加的机器上留下什么?
几乎什么都不会:只有 fleet edit 在那里写入的备注文件(machine.yaml:标签、成本、备注、文件夹、声明的服务)、~/.cache/fleet 中的软件版本和文件夹大小的小型缓存,以及 authorized_keys 中完全没有任何内容。没有程序,也没有服务。
fleet 会更改什么列出了完整清单。
Agent 能做我无法撤销的事吗?
Agent 会被告知不要这样做。移除机器的操作由你决定,而且应用完全无法通过 MCP 执行此操作。请求含糊不清时——例如不确定是哪台机器或哪个用户——Agent 会先询问,而不是猜测。
机器
fleet 报告的磁盘空间不准确。
某些系统——例如容器、GPU 租赁机器——会将 / 显示为一个小型覆盖层,而实际空间位于另一个卷中。告诉 fleet 要监控哪些路径:“在 gpu-box 上监控 /workspace”,或运行 fleet edit gpu-box --disk-path /workspace。请参阅磁盘。
我的租赁机器换了新的 IP 或端口。
更新连接信息,同时保留其名称、标签、成本和历史记录:“gpu-box 现在的地址是
ssh -p 40123 [email protected]”,或运行 fleet edit gpu-box --ssh "ssh -p 40123 [email protected]"。
我的机器位于不同的 NAT 后面,或分布在不同的地点。
fleet 不负责解决连接问题;它使用你已有的路由。运行 fleet 的机器必须能通过 SSH 连接到每台机器;这些机器之间无需互相连接。 对于位于不同 NAT 后的机器,请将它们接入 Tailscale 或 ZeroTier 等网状网络,并通过网状网络地址添加。参见 [连接到你的机器](docs/guides/reaching-machines.md)。Windows?
可以,两种方式都支持。安装 OpenSSH Server 后,Windows 机器即可作为目标机器使用,无需安装其他软件;fleet 也能在 Windows 上运行。参见 Windows。
有什么东西会在后台持续运行吗?
不会。只有你或 Agent 使用 fleet 时,它才会运行。在它查看的机器上,有时可能会在后台运行你指定文件夹的 du 命令,以便知道文件夹的大小,而无需让探测操作等待。
我用过 fleet 0.5。有什么变化?
fleet 不再管理访问权限:没有中心服务、没有邀请,也没有自有密钥。升级后,请重新添加你的机器。从 0.5 升级列出了 0.5 在你的机器上留下的内容,以及如何将其移除。
如何移除 fleet?
运行 fleet uninstall(添加 --purge 可同时删除其文件):此命令会从你的 Agent 中移除 fleet,并显示最后一步操作:uv tool uninstall agents-fleet。参见
移除 fleet。
了解更多
- 快速入门 — 十分钟内创建你的第一个 fleet
- 指南 — 添加机器、连接机器、了解每台机器上的内容,以及 Windows
- 所有 Agent — 35 种以上 Agent 的安装命令和配置
- 命令参考 — 所有命令和选项
- fleet 的工作原理 — 一步步了解底层运行过程
- 设计 — 每台机器一个核心、每个 Agent 一个技能,其余功能由 MCP 提供
- 全部文档,也可通过网站查看:agents-fleet.dev
状态: v0.6。测试套件可在 Linux、macOS 和 Windows 上运行;在 CI 中,每条命令都会在每种操作系统的真实机器上端到端运行——既通过脚本以 Agent 的运行方式执行,也在真实终端中以你使用的方式执行。
欢迎提交问题和拉取请求——请参阅 CONTRIBUTING.md。如果 fleet 为你节省了一个 GPU 小时,点个 ⭐ 能帮助更多人发现它。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。