ShellRS
ShellRS 是一款免费开源的 SSH 客户端,使用 Rust 编写:主机管理、终端、WinSCP 风格的 SFTP 与端口转发,全部在一个 GPU 渲染窗口中,支持 macOS、Windows 和 Linux。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗An Age of Empires style control panel for a fleet of AI agents. Each agent is a unit on a map of your
codebase. It walks to the folder it is working in, raises a ? when it needs your approval and a ! when
it fails or gets blocked. An alert feed pings you, and the command card (Pause, Resume, Redirect, Stop,
Approve, Deny) acts on the real agent.
Open it: kdi208.github.io/Age-of-Agents. It starts on a demo fleet.
There are three ways to use it.
| What you see | Setup | |
|---|---|---|
| Demo | 12 simulated agents. Everything is clickable, nothing is real. | None. Open the link above. |
| Claude Code | Every Claude Code session on your computer, live. | Two commands, below. |
| Any agent | Your own bots, scripts or other frameworks, live. | One HTTP request per update. |
You need Node 18 or newer. Nothing to download:
npx github:kdi208/Age-of-Agents setup # once: adds hooks to ~/.claude/settings.json (a backup is kept)
npx github:kdi208/Age-of-Agents # starts the bridge and opens the HUD at http://127.0.0.1:4545
The bridge also prints a link to the hosted HUD that is already connected to your computer. The first time
you open it, your browser may ask whether the page may reach apps on your device: allow it. If your browser
refuses (Safari can), use the 127.0.0.1 link instead.
Prefer plain files? Clone this repo and run node fleet-bridge.js setup, then node fleet-bridge.js.
Now start or continue any Claude Code session. It joins the fleet as a unit.
npx github:kdi208/Age-of-Agents setup --here inside that project. This
writes .claude/settings.local.json instead.npx github:kdi208/Age-of-Agents remove (or remove --here).Options: --port 4545, --budget 50 (dollars, for the top bar), --no-open. Set the environment variable
FLEET_APPROVAL_WAIT to change how many seconds the HUD gets to answer a permission prompt (default 300).
| Order | Effect |
|---|---|
| Approve / Deny (A / X) | Answers the session's permission prompt. While the HUD is open, prompts wait for the HUD. If nobody answers within 5 minutes, or the HUD is closed, the normal terminal prompt appears instead. |
| Pause (P) | The session holds before its next tool call, for up to 55 minutes. |
| Resume (R) | Releases a paused session. |
| Stop (S) | Ends the session's current turn at its next tool call. You can keep typing in its terminal afterwards. |
| Redirect (D) | Queues an instruction. A working session gets it when it finishes its current turn and carries on with it. An idle session gets it with your next prompt. Claude treats it as a note from the HUD and may still use its judgment. |
Review Diff, Open PR and Spawn Helper only work in the demo for now.
Context left comes from the session's transcript. Cost is an estimate from token counts at list prices,
marked with *. Your real bill can differ.
The bridge speaks a small JSON format. Each request carries the token the bridge prints at start (also in
~/.fleet-bridge/token).
TOKEN=$(cat ~/.fleet-bridge/token)
curl -X POST http://127.0.0.1:4545/api/agents \
-H "X-Fleet-Token: $TOKEN" -H "Content-Type: application/json" \
-d '{"id": "etl-bot", "team": "data", "status": "working", "area": "pipelines", "task": "Load the orders", "log": "Read 12k rows"}'
Send the same request again with new fields whenever something changes. Only id is required. The rest
update what's shown.
| Field | Type | Meaning |
|---|---|---|
id | string | Required. Stable id of the agent. |
name | string | Display name. Defaults to id. |
team | string | Agents with the same team share a colour and a score row. |
role | string | builder, reviewer, tester, scout, fixer or scribe. Sets the unit's tool. |
status | string | working, idle, approval, blocked, failing, paused or done. Changing to approval, blocked or failing raises an alert. |
area | string | The part of the codebase or system it is in. Each new area becomes a building on the map, and the unit walks there. |
task | string | What it is doing, in a sentence. |
waitingOn | string | With approval: what it wants to do ("push to main"). With blocked: what it waits for. |
log | string or array | A string appends one line to its log. An array of [time, text] pairs replaces the log. |
ctx, ctxMax | number | Tokens used in its context window, and the window size. Drives the green bar. |
cost | number | Dollars spent so far. |
tasks | number | Tasks finished. |
perm | string | Ask, Edits, Plan, Auto or Read-only. |
runs | string | Last few step results, such as "ggr" (g = ok, r = failed). |
You can send one agent, an array of agents, or {"agents": [...]}.
When someone presses an order in the HUD, the bridge keeps it for that agent. Your agent fetches its orders:
curl "http://127.0.0.1:4545/api/commands?agent=etl-bot" -H "X-Fleet-Token: $TOKEN"
# {"commands":[{"agent":"etl-bot","order":"approve","text":"","at":1793063971480}]}
Orders are pause, resume, redirect (with text), stop, approve and deny. Each one is returned
once. To get them pushed instead, listen to GET /api/stream?token=.... It is a server-sent event stream
with fleet, alert and command events. examples/my-agent.py is a complete agent in 40 lines.
| Method and path | What it does |
|---|---|
GET / | The HUD, already connected to this bridge. |
GET /api/fleet | The whole fleet as JSON. |
GET /api/stream?token= | Live events: fleet (full snapshot), alert, command. |
POST /api/agents | Add or update agents. |
DELETE /api/agents/:id | Remove an agent. |
GET /api/commands?agent= | Orders waiting for an agent. |
POST /api/command | Send an order: {"agent", "order", "text"}. This is what the HUD calls. |
POST /hook | Claude Code hook events. The hooks call it for you. |
127.0.0.1 only, so other machines can't reach it.Host header are refused.index.html: the HUD. A single page with no build step and no dependencies.fleet-bridge.js: the bridge and hook installer. A single file with no dependencies.examples/my-agent.py: a minimal agent that reports in and obeys orders.alert | string | One-off message for the alert feed. |