Skip to content

Repository files navigation

ServerPilot icon

ServerPilot

Agent 自己拿卡,人类实时监控。
MCP for Agent · Native Desktop Apps · Open Source

核心功能 · 快速开始 · Agent 用法 · 边界与安全 · 文档

Python 3.12+ Native macOS App Native Windows App Three routine MCP tools MIT License

ServerPilot:将零散 GPU 汇总为可供 Agent 协作的资源池,并由人类监控

概念示意图,不代表真实资源状态或 App 页面。

🤖 Agent 会写代码、跑实验了,GPU 还需要一张张指定吗?

对 Agent,ServerPilot 是一个 MCP:查卡、申请、归还。对人,它是一个 macOS 或 Windows App:看多台服务器的空闲、占用、任务和异常。

一个本机用户,管理多台服务器与协作 Agent;资源状态、申请和人工纠错始终围绕同一份本机控制面快照。

核心价值 ServerPilot 提供什么
统一资源事实 GUI、CLI 和 MCP 共用 daemon 的已提交快照,不再分别推算或采集状态。
Agent 三步闭环 Agent 通过 gpu_status → gpu_apply → gpu_release 完成日常 GPU 协调。
人类实时监控 人可以查看服务器、任务、归属和异常,并在需要时执行受限纠错。
逐卡空闲占卡 可选的 keepalive 只让出被申请的卡,用后按策略恢复,不影响同机其它卡。

✨ 核心功能

🛰️ 人类实时监控:多台服务器,一张图

按设置的采集间隔更新服务器状态;GPU 空闲、占用、任务归属和采集异常,都在 App 里直接看。

🧩 Agent 自主调度:有空卡,Agent 自己领

默认 MCP 只有三个日常工具:

  • 🔍 gpu_status:查看可用 GPU 及最近显存、利用率遥测
  • 🔑 gpu_apply:申请 GPU
  • ♻️ gpu_release:明确归还

申请成功后,Agent 会拿到 SSH 连接、远端工作目录、CUDA selector 和 lease_id,不用再猜服务器、目录或 GPU 编号。

🛠️ 人类纠错反馈:平时不打扰,需要时再纠正

Agent 正常干活时,人只看全局。发现归属不对、连接异常或遗留占用,再人工确认和纠正;可处理遗留租约,或在保持卡数不变的前提下改派 GPU。

🐶 一个小彩蛋:空闲 GPU,先占着(可选)

逐卡 keepalive 可让确认空闲的 GPU 按策略保持待命。Agent 申请时只让出目标卡,用完归还后再恢复待命,不影响同机其他 GPU。

只用于你有管理权限的服务器,不碰未知或他人正在运行的任务。

🚀 快速开始

从源码启动需要 Python 3.12+uv 和 macOS 或 Windows。Windows 用户也可以直接下载下方的桌面 App,无需预先安装 Python 或 uv。

1. 🧰 启动本机控制面

git clone https://github.com/JinPLu/ServerPilot.git
cd ServerPilot
uv tool install --force .
serverpilot daemon install --source-root "$PWD"
serverpilot daemon status

服务默认监听 http://127.0.0.1:8787

2. 🖥️ 登记你的 GPU 服务器

在有管理权限的服务器部署同版本采集入口,并保证非交互 SSH 可以执行:

serverpilot-collect --schema-version 2

在 App 中添加 SSH 连接和绝对远端工作目录。新鲜采集成功后,GPU 才进入可申请状态。详细要求见服务器采集协议

3. 🤖 接入 Agent

以 Codex 为例:

codex mcp add serverpilot \
  --env SERVERPILOT_URL=http://127.0.0.1:8787 \
  -- serverpilot-mcp
python3 scripts/install_agent_policy.py codex --install

Claude Code 与 Cursor 的接入方式见 Agent / MCP 指南

🤖 Agent 用法

gpu_status → gpu_apply(task="任务名") → 使用返回的分配 → gpu_release(lease_id)
  • Agent 不传 GPU ID,gpu_apply 负责选卡。
  • gpu_status 的逐卡 telemetry 同时包含最近观测与近 10 分钟平均资源使用;端点 host_telemetry.recent_average 同样提供 CPU 负载和内存占用的近 10 分钟均值。GUI 与 MCP 都读取 daemon 的同一份 REST 快照,不会重复 SSH 采集。首次只读采集会把端点记录为 GPU、纯 CPU 或尚未确认;纯 CPU 服务器保留 CPU/内存监控,并以说明性的 cpu_only_servers 返回给 Agent,但不会参与 GPU 分配。汇总 telemetry_summarycurrent_average_* 只表示当前瞬时样本的跨卡平均;它们不决定可申请性,仍以 statusgpu_apply 为准。
  • SSH 后先进入返回的 workspace.path,再使用 CUDA selector。workspace.path 是远端工作目录,不是代码仓库。
  • CUDA 初始化或 workload 启动失败时,立即 gpu_release
  • no_capacity 表示不分配、不排队;不要在同一轮反复申请。

🖥️ 打开桌面 App

Windows

GitHub Releases 下载 ServerPilot-*-windows-x64.zip,解压后运行其中的 ServerPilot.exe。App 会在 %LOCALAPPDATA%\ServerPilot 保存本机 inventory 与控制面状态,启动后直接打开与 macOS 版相同的信息架构:服务器总览、服务器详情、逐 GPU 显存环图和 2×2 资源历史。

Windows 10/11 需要 Microsoft Edge WebView2 Runtime(多数系统已自带);缺失时 App 会给出明确提示,不会降级为外部浏览器页面。关闭窗口只停止本次由 App 启动的本机服务;已经在运行的控制面保持不受影响。

如需从 Windows 源码构建,可在 PowerShell 中运行:

.\desktop\build-windows-app.ps1

macOS

zsh desktop/build-macos-app.sh
open "./ServerPilot.app"

App 负责看状态、看归属、看异常。人工改派只更新 lease 和 CUDA selector,不迁移正在运行的进程;对应 Agent 需按新 selector 重启 workload。

🛡️ 边界与安全

  • ServerPilot 只协调 GPU 归属,不替项目启动、停止、迁移或抢占 workload。
  • 服务器状态只来自固定的只读 SSH 采集入口;不接收任意远端命令,也不提供密码或私钥。
  • 采集过期、连接异常、未知进程或资源冲突时,一律拒绝分配(fail closed)。
  • 控制面默认只监听本机 loopback;GPU UUID 与 endpoint 是资源身份边界。

📚 文档

License

MIT

About

MCP-based GPU coordination for AI agents, with human oversight across multiple servers.

Topics

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages