Skip to content
Automation
Skill

/agent-registry

Local Agent Registry — a standalone, dependency-free service that tracks running Claude Code (and other) agent instances. Agents self-register on startup and heartbeat while alive; the Electron overlay and Sutando dashboard read the live list. Use when you need to know which

From plugin
sutando
41087 skills20 hooks

Claude Code

$ npx -y skills add sonichi/sutando --skill agent-registry --agent claude-code

SKILL.md

agent-registry.SKILL.md
name: agent-registry
description: Local Agent Registry — a standalone, dependency-free service that tracks running Claude Code (and other) agent instances. Agents self-register on startup and heartbeat while alive; the Electron overlay and Sutando dashboard read the live list. Use when you need to know which coding agents are running, where, and since when.

Agent Registry

A thin **local** service that tracks running agent instances. Claude Code instances register themselves on startup (via a SessionStart hook) and heartbeat while alive; consumers read the live list over a localhost HTTP API.

This is **not** the AG2 Workforce Hub app. It is a small local service that can *optionally* mirror its state to an AG2 hub using the hub connection layer (`ag2_workforce.hub.client`) — see "Optional: AG2 Hub mirroring" below — but the core service has zero third-party dependencies and works entirely offline.

Components

skills/agent-registry/
├── scripts/registry-service.py   # the HTTP service + SQLite store
├── scripts/registry-client.py    # CLI: register / heartbeat / deregister / list / watch
└── hooks/session-start.sh        # Claude Code SessionStart hook
  • **DB:** `<workspace>/data/agent-registry.db` (SQLite, auto-created)
  • **Discovery file:** `<workspace>/state/agent-registry.json` — written by the

service with the bound port so clients find it without a hardcoded port.

  • **Port:** binds `127.0.0.1`, first free port from `7847` upward.

Running the service

It is **startable by Sutando** three ways, in order of preference:

1. **Auto-start (default).** Any `registry-client.py` call with `--autostart` launches the service detached if it is not already running. The SessionStart hook passes `--autostart`, so the first Claude Code session to start brings the registry up. 2. **From `startup.sh`.** For an always-on registry, add to `src/startup.sh`: `python3 skills/agent-registry/scripts/registry-service.py &` 3. **By hand:** `python3 skills/agent-registry/scripts/registry-service.py`

Registering Claude Code instances

Add the SessionStart hook to `.claude/settings.json`:

{
  "hooks": {
    "SessionStart": [
      { "hooks": [
        { "type": "command",
          "command": "bash skills/agent-registry/hooks/session-start.sh" }
      ] }
    ]
  }
}

On session start the hook backgrounds `registry-client.py watch`, which registers the instance, heartbeats every 30s, and deregisters when the session ends. If it is killed ungracefully the entry ages out via heartbeat staleness (`> 90s` → `stale`; stopped/stale rows are pruned after 1h).

HTTP API

| Method | Path | Body | Returns | |--------|---------------|-------------------------------|--------------------------| | POST | `/register` | `{name, cwd, pid, host?, meta?}` | `{id}` | | POST | `/heartbeat` | `{id}` | `{ok, status}` | | POST | `/deregister` | `{id}` | `{ok}` | | GET | `/agents` | — | `{agents:[...], count}` | | GET | `/health` | — | `{ok, count, uptime}` |

Each agent record: `id, name, cwd, pid, host, started_at, last_heartbeat, heartbeat_age, status, meta`. `status` is `active` / `stale` / `stopped`.

CLI quick reference

C=skills/agent-registry/scripts/registry-client.py
python3 $C list                                  # show the registry
python3 $C register --name claude-code --pid $$  # register (prints id)
python3 $C heartbeat  --id <ID>
python3 $C deregister --id <ID>
python3 $C watch --name claude-code --pid <PID> --autostart   # used by the hook

Other agents (Kimi Code, etc.)

The service is agent-agnostic — `name` is free-form, so any agent registers the same way (`--name kimi-code`). What is agent-specific is the *registration trigger*: Claude Code uses a SessionStart hook; another agent needs its own equivalent (a startup hook, plugin, or a launch-command wrapper that runs `registry-client.py watch`).

Optional: AG2 Hub mirroring

To announce registry state to an AG2 hub, a future extension can open a `RemoteHubClient` (`ag2_workforce.hub.client`) and post agent join/leave events. This is deliberately *not* in the core service — it stays dependency-free and local-first. Add it as a separate module that subscribes to registry changes.

Read more
@sonichi
Ships withsutando

My AI Stand — Realtime by Day, Rewriting Itself by Night. Summon my AI superpower. Voice, vision, screen, meetings, calls when I'm engaged. Learns my patterns, ships its own code when I'm not. Runs across my Macs, interacts with people & their Stands.

Stars on GitHub

Momentum

stars in total
410
Star history of sonichi/sutando on GitHub, a chart by star-history.com

Other skills on sutando.

ag2-space-mcp

ag2-space-mcp

Connect this Sutando install to AG2 Space's hosted MCP as its own agent, without the desktop app, and know which room and Commons…

@sonichi@sonichiInstall Skill
ag2space-voice

ag2space-voice

s.space voice surface — binds the room the s.space client announces to the voice session's origin, so work delegated by voice in…

@sonichi@sonichiInstall Skill
agent-activity

agent-activity

Streams what the agent is doing into the room, as rows the desktop client renders in an **events drawer** above the composer…

@sonichi@sonichiInstall Skill
agent-room-ops

agent-room-ops

For an all-room analysis sweep, use the tested window collector and coverage contract in…

@sonichi@sonichiInstall Skill
answer-format

answer-format

Deterministic final-answer normalizer — a last-step pass for any task that ends in a *precise* answer (a number, a short string,…

@sonichi@sonichiInstall Skill
app-request

app-request

Playbook for a task with `event_type: commons.app_request` (an s.space AgentTrigger: your owner pressed a button in a Commons app…

@sonichi@sonichiInstall Skill

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n2w209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

@browser-use@browser-useInstall Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill

Questions about agent-registry.

Which coding agents can use agent-registry?
agent-registry installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.