ShellRS
ShellRS는 Rust로 작성된 무료 오픈소스 SSH 클라이언트
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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. |