Source profileQuality 80/100Review permissions

sonichi/sutando/skills/agent-registry/SKILL.md

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 coding agents are running, where, and since when.

Source repository stars
359
Declared platforms
1
Static risk flags
1
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

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.

Best for

  • Use when you need to know which coding agents are running, where, and since when.

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeDeclaredSource recordInstall path and trigger
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/sonichi/sutando --skill "skills/agent-registry"
Safe inspection promptEditorial

Inspect the Agent Skill "agent-registry" from https://github.com/sonichi/sutando/blob/6a8f0fccd32e5aa620a3572c8885544f144bb6fe/skills/agent-registry/SKILL.md at commit 6a8f0fccd32e5aa620a3572c8885544f144bb6fe. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Components

    DB: /data/agent-registry.db (SQLite, auto-created)

    DB: /data/agent-registry.db (SQLite, auto-created)Discovery file: /state/agent-registry.json — written by thePort: binds 127.0.0.1, first free port from 7847 upward.
  2. 02

    Running the service

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

    Auto-start (default). Any registry-client.py call with --autostartFrom startup.sh. For an always-on registry, add to src/startup.sh:By hand: python3 skills/agent-registry/scripts/registry-service.py
  3. 03

    Registering Claude Code instances

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

    Add the SessionStart hook to .claude/settings.json: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 st…
  4. 04

    HTTP API

    Each agent record: id, name, cwd, pid, host, startedat, lastheartbeat, heartbeatage, status, meta. status is active / stale / stopped.

    Each agent record: id, name, cwd, pid, host, startedat, lastheartbeat, heartbeatage, status, meta. status is active / stale / stopped.
  5. 05

    CLI quick reference

    Review the “CLI quick reference” section in the pinned source before continuing.

    Review and apply the “CLI quick reference” source section.

Permission review

Static risk signals and limitations

Runs scripts

medium · line 77

The documentation asks the agent to run terminal commands or scripts.

python3 $C list # show the registry

Runs scripts

medium · line 78

The documentation asks the agent to run terminal commands or scripts.

python3 $C register --name claude-code --pid $$ # register (prints id)

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score80/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars359SourceRepository attention, not individual Skill quality
Compatibility1 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
sonichi/sutando
Skill path
skills/agent-registry/SKILL.md
Commit
6a8f0fccd32e5aa620a3572c8885544f144bb6fe
License
MIT
Collected
2026-07-28
Default branch
main
View the original SKILL.md

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 (> 90sstale; stopped/stale rows are pruned after 1h).

HTTP API

MethodPathBodyReturns
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.

Alternatives

Compare before choosing