Overview¶
rom-manager exposes a local ROM conversion pipeline through three surfaces: a
CLI, an action-routed MCP server, and a Pydantic-AI agent.
Architecture¶
graph TD
User([User/A2A]) --> Agent[Pydantic AI Agent]
User --> CLI[CLI: rom-manager]
Agent --> MCP[MCP Server / FastMCP]
MCP --> Client[Api Facade]
CLI --> Core[RomManager Pipeline]
Client --> Core
Core --> Bins([chdman / dolphin-tool / patool])
Action-routed tool surface¶
Instead of one MCP tool per operation, rom-manager groups operations into two
consolidated, togglable domains. Each is a single tool that routes on an
action string with a params_json payload — minimizing tool count and token
overhead in LLM contexts.
| Domain | Tag | Toggle | Actions |
|---|---|---|---|
ROM Conversion (CONCEPT:ROM-001) |
conversion |
CONVERSIONTOOL |
convert, process_directory, process_file, generate_cue, list_files |
Game Codes / Naming (CONCEPT:ROM-002) |
game-codes |
GAMECODESTOOL |
lookup, list, rename |
The conversion pipeline¶
RomManager.process_parallel walks a directory, then per file:
- Extract archives (
.7z,.zip,.rar, …) viapatool(optional native extra). - Generate missing
.cuesheets for.bintracks. - Rename using the embedded game-code registry (
game_codes.psx_codes). - Convert ISO/GDI/CUE → CHD (
chdman) or WBFS/ISO → RVZ (dolphin-tool). - Cleanup extracted/origin files when requested.