Multi-Agent Registry 🤖
Unified detection, configuration, plugin, and chat history discovery registry for AI coding agent CLIs.
multi_agent_registry gives any tool a single place to ask "which AI coding agents are installed on this machine, where do they keep their config/plugins, and where did they leave their chat history?" — instead of every consumer re-implementing per-agent path guessing.
Installation
pip install multi-agent-registry
# or using uv
uv add multi-agent-registry
The PyPI distribution name is multi-agent-registry; the importable module name is multi_agent_registry:
import multi_agent_registry
Features
- Multi-Agent CLI Detection: A registry of 15 agent CLIs — Claude Code, Antigravity (
agy), OpenCode, GitHub Copilot, Grok Build, Cursor, Windsurf, Aider, Codex, Continue, Cline, Roo Code, Goose, ShellGPT, and Open Interpreter — with binary name, description, and config paths for each. - Installation & MCP Inspection:
inspect_agent_cli()/inspect_all_agent_clis()check whether each agent's binary is onPATH, whether it's registered as an MCP server, and whether a plugin is installed for it. - Chat Log Discovery:
discover_agent_chats()scans the on-disk chat log locations for agents that expose them (currently Claude Code, Antigravity, OpenCode, Aider, Cline, and Roo Code), with recursive-glob patterns pruned to skipnode_modules/.venv/.git/.gwtfor speed. - Chat Inspection Helpers:
get_chat_workspace()andget_chat_last_active()read each agent's own on-disk format to resolve which project a chat belongs to and when it was truly last active (not just file mtime). - Plugin Enable/Disable State: Per-agent plugin opt-out, persisted to
~/.config/task-agent/config.json, for tools that install agent-specific plugins/skills.
Quickstart
from multi_agent_registry import get_agent_cli_registry, discover_agent_chats, get_chat_workspace
# What agents does this machine have?
for agent_id, info in get_agent_cli_registry().items():
print(agent_id, info.name, info.binary)
# Where has Claude Code been chatting, and about which projects?
for chat in discover_agent_chats(agent_id="claude"):
workspace = get_chat_workspace(chat)
print(chat.path, "->", workspace)
API Reference
Registry & detection
from multi_agent_registry import AgentCLIInfo, get_agent_cli_registry, inspect_agent_cli, inspect_all_agent_clis
registry: dict[str, AgentCLIInfo] = get_agent_cli_registry()
info = registry["claude"]
info.id, info.name, info.binary, info.description
info.config_paths # list[Path] of possible config file locations
info.mcp_support, info.mcp_command_example
info.plugin_support, info.plugin_path, info.skills_path, info.plugin_template
info.chat_log_patterns # list[str] glob patterns, [] if not yet supported
info.chat_parser_type # "json" | "jsonl" | "markdown"
status = inspect_agent_cli("claude") # dict: installed, mcp_registered, plugin_installed, ...
all_status = inspect_all_agent_clis() # same, for every registered agent
Chat discovery
from multi_agent_registry import DiscoveredChat, discover_agent_chats
from pathlib import Path
# All chats for one agent, scanned globally (patterns rooted at ~ or /)
# or within specific project roots (patterns relative to a project).
chats: list[DiscoveredChat] = discover_agent_chats(
agent_id="aider", # omit to scan every agent
search_roots=[Path.home() / "repos"], # only used for project-relative patterns
)
# chat.agent_id, chat.path, chat.parser_type
Agents currently wired up for chat discovery: claude, agy (Antigravity), opencode, aider, cline, roo. The rest are registered for detection/config/plugin purposes but don't yet have chat_log_patterns populated — contributions welcome.
Chat inspection
from multi_agent_registry import get_chat_workspace, get_chat_last_active
get_chat_workspace(chat) # -> Path | None, the project dir the chat belongs to
get_chat_last_active(chat) # -> datetime | None, true last-message time (jsonl only for now);
# callers should fall back to file mtime when None
Notes for tools built on this library
- Absolute/home-relative
chat_log_patterns(e.g.~/.claude/projects/**/*.jsonl) are scanned once, globally —search_roots/project_dironly affects patterns relative to a project (e.g. Aider's**/.aider.chat.history.md). discover_agent_chats()shells out tofindfor bare recursive-filename patterns (pruning noise directories natively) rather thanglob.glob(recursive=True), which must fully traverse a tree before filtering — orders of magnitude faster on large repo trees.get_chat_workspace()/get_chat_last_active()read each agent's actual on-disk message format (e.g. scanning forward past Claude Code's leading metadata-only jsonl lines for the firstcwd/timestamp) rather than assuming a fixed line/file layout.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file multi_agent_registry-0.3.1.tar.gz.
File metadata
- Download URL: multi_agent_registry-0.3.1.tar.gz
- Upload date:
- Size: 13.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
290aef6a97202a3438ab3d4a72cb66a44859c59d5ff85ed1a4ed04baffd95df2
|
|
| MD5 |
d9940e00a78e005eddb08eacfb635c4f
|
|
| BLAKE2b-256 |
125dc5050e0ce64faa208e8b8c57d0f3d8cfa4d81e43abe0196f50addd9e803c
|
Provenance
The following attestation bundles were made for multi_agent_registry-0.3.1.tar.gz:
Publisher:
publish.yml on InTEGr8or/multi-agent-registry
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
multi_agent_registry-0.3.1.tar.gz -
Subject digest:
290aef6a97202a3438ab3d4a72cb66a44859c59d5ff85ed1a4ed04baffd95df2 - Sigstore transparency entry: 2731004799
- Sigstore integration time:
-
Permalink:
InTEGr8or/multi-agent-registry@86edf20b199f07ef29c38db4672f6a79f2ca6367 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/InTEGr8or
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@86edf20b199f07ef29c38db4672f6a79f2ca6367 -
Trigger Event:
push
-
Statement type:
File details
Details for the file multi_agent_registry-0.3.1-py3-none-any.whl.
File metadata
- Download URL: multi_agent_registry-0.3.1-py3-none-any.whl
- Upload date:
- Size: 13.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f67ec129bfee61ac1ed3637b58e1e0b1a69ee65da009e7db14590e8a50a07ad9
|
|
| MD5 |
0ad41a9bf0396aa79dc3d8863384db45
|
|
| BLAKE2b-256 |
b7802fee91ee65540b8f3591dda18c09b7b2e22e78387ea7b85a2cb1e9dd3916
|
Provenance
The following attestation bundles were made for multi_agent_registry-0.3.1-py3-none-any.whl:
Publisher:
publish.yml on InTEGr8or/multi-agent-registry
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
multi_agent_registry-0.3.1-py3-none-any.whl -
Subject digest:
f67ec129bfee61ac1ed3637b58e1e0b1a69ee65da009e7db14590e8a50a07ad9 - Sigstore transparency entry: 2731004920
- Sigstore integration time:
-
Permalink:
InTEGr8or/multi-agent-registry@86edf20b199f07ef29c38db4672f6a79f2ca6367 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/InTEGr8or
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@86edf20b199f07ef29c38db4672f6a79f2ca6367 -
Trigger Event:
push
-
Statement type: