mcpField
F
fleet

fleet

本地服务
github.com云与基础设施0今天更新

关于 fleet

fleet 让编码 Agent 和命令行用户检查并使用可通过 SSH 访问的机器,包括 GPU 空闲情况、任务、软件和已提供服务的模型。它无需在远程机器上安装程序或服务即可探测信息,也为无法运行命令的应用提供 MCP 服务。

主要功能

  1. 01通过 SSH 汇总机器信息
  2. 02查看 GPU 空闲情况和运行任务
  3. 03检查软件、模型和数据目录
  4. 04发现 SSH 配置及 tailnet 机器
  5. 05通过 fleet 命令行运行命令

适用场景

  1. 01选择有空闲 GPU 的机器
  2. 02查找运行模型服务的主机
  3. 03在 Linux 机器上运行测试
  4. 04定位数据集并查看可用磁盘空间

MCP 相关

fleet 为无法运行命令的桌面应用和编辑器提供 MCP 服务,向这些客户端开放相同的 fleet 命令。能够运行命令的 Agent 则使用 skill。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"lion-zhang-fleet": {
"command": "uvx",
"args": [
"agents-fleet"
]
}
}
}
启动命令uvx agents-fleet

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiagents-fleet0.6.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

README 配图

fleet — 让你的编码 Agent 使用你拥有的每台机器

Claude Code、Codex 和 Gemini 只能看到一台机器:它们运行的那台。
fleet 能让它们看到你所有的机器——每块 GPU 及其运行情况、正在提供服务的模型、已安装的软件,以及模型和数据所在的位置。

无需账号,无需云服务,无需在你添加的机器上安装任何内容,也无需交出密钥:fleet 使用你已有的 SSH,完全按照你平时的方式登录。

tests License: MIT Linux | macOS | Windows MCP server

一个 40 秒的演示。收到“在任何有空闲 24 GB 显卡的机器上训练”的要求后,Agent 运行 fleet ls --tag cuda --tag vram-24g,在两台付费租用机器和一台繁忙的机器中选出空闲的 RTX 4090,在那里分离运行 train.py,并确认显卡现在正在使用。收到“哪些机器正在花钱”的要求后,它指出一台每小时收费 $2.49、但处于空闲状态的 H100 租用机器,并将是否停止它的决定留给你。

问题所在

让 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.py

Agent: 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添加到 Cursor
VS Code在 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
fleet ls:显示七台机器上的空闲 GPU、VRAM、CPU、RAM 和磁盘空间——一台有一张忙碌和一张空闲显卡的 A100 租用机、一台空闲但仍在产生费用的 H100 租用机、一台磁盘快满的忙碌 RTX 3090 机器、一台笔记本电脑、一台 NAS,以及一台已关机的机器 fleet top:实时查看所有机器上的 GPU 利用率、空闲 VRAM、CPU、RAM、磁盘空间,以及每张 GPU 上运行的任务 fleet ps:查看每张 GPU 上的所有任务——一台 A100 租用机上的训练任务,以及一台配有两张 RTX 3090 的实验室机器上的微调任务和 vLLM 服务——还有三张空闲 GPU fleet models:由 vLLM 在实验室机器上提供服务的 Llama 3.1 及其 URL;以及 RTX 4090 上的两个 ollama 模型,它们仅监听本地连接,还有用于连接它们的 ssh 隧道

机器存放模型、数据集和媒体文件的位置会写在机器本身的 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-sminvitop / gpustatall-smi / gpuwhoSkyPilot / dstackfleet
在一个视图中查看所有机器✗✗ 一台机器✓✓ 它管理的机器✓
专为编码 Agent 打造(skill / MCP)✗✗✗部分支持✓
目标机器上无需安装任何内容✓✗gpuwho ✓,all-smi ✗✗✓
任务、提供服务的模型、软件、数据文件夹✗任务、一台机器任务✗✓
支持 NVIDIA、AMD 和 Apple GPUNVIDIANVIDIAall-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。

了解更多

状态: v0.6。测试套件可在 Linux、macOS 和 Windows 上运行;在 CI 中,每条命令都会在每种操作系统的真实机器上端到端运行——既通过脚本以 Agent 的运行方式执行,也在真实终端中以你使用的方式执行。

欢迎提交问题和拉取请求——请参阅 CONTRIBUTING.md。如果 fleet 为你节省了一个 GPU 小时,点个 ⭐ 能帮助更多人发现它。

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。