2026-03-24 02:29:45 +00:00
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
"id": "morrowind",
|
|
|
|
|
"name": "Morrowind",
|
|
|
|
|
"description": "The Vvardenfell harness. Ash storms and ancient mysteries.",
|
|
|
|
|
"status": "online",
|
|
|
|
|
"color": "#ff6600",
|
|
|
|
|
"position": { "x": 15, "y": 0, "z": -10 },
|
|
|
|
|
"rotation": { "y": -0.5 },
|
|
|
|
|
"destination": {
|
|
|
|
|
"url": "https://morrowind.timmy.foundation",
|
|
|
|
|
"type": "harness",
|
|
|
|
|
"params": { "world": "vvardenfell" }
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": "bannerlord",
|
|
|
|
|
"name": "Bannerlord",
|
|
|
|
|
"description": "Calradia battle harness. Massive armies, tactical command.",
|
feat: Complete Bannerlord MCP Harness implementation (Issue #722)
Implements the Hermes observation/control path for local Bannerlord per GamePortal Protocol.
## New Components
- nexus/bannerlord_harness.py (874 lines)
- MCPClient for JSON-RPC communication with MCP servers
- capture_state() → GameState with visual + Steam context
- execute_action() → ActionResult for all input types
- observe-decide-act loop with telemetry through Hermes WS
- Bannerlord-specific actions (inventory, party, save/load)
- Mock mode for testing without game running
- mcp_servers/desktop_control_server.py (14KB)
- 13 desktop automation tools via pyautogui
- Screenshot, mouse, keyboard control
- Headless environment support
- mcp_servers/steam_info_server.py (18KB)
- 6 Steam Web API tools
- Mock mode without API key, live mode with STEAM_API_KEY
- tests/test_bannerlord_harness.py (37 tests, all passing)
- GameState/ActionResult validation
- Mock mode action tests
- ODA loop tests
- GamePortal Protocol compliance tests
- docs/BANNERLORD_HARNESS_PROOF.md
- Architecture documentation
- Proof of ODA loop execution
- Telemetry flow diagrams
- examples/harness_demo.py
- Runnable demo showing full ODA loop
## Updates
- portals.json: Bannerlord metadata per GAMEPORTAL_PROTOCOL.md
- status: active, portal_type: game-world
- app_id: 261550, window_title: 'Mount & Blade II: Bannerlord'
- telemetry_source: hermes-harness:bannerlord
## Verification
pytest tests/test_bannerlord_harness.py -v
37 passed, 2 skipped, 11 warnings
Closes #722
2026-03-31 04:53:29 +00:00
|
|
|
"status": "active",
|
2026-03-24 02:29:45 +00:00
|
|
|
"color": "#ffd700",
|
|
|
|
|
"position": { "x": -15, "y": 0, "z": -10 },
|
|
|
|
|
"rotation": { "y": 0.5 },
|
feat: Complete Bannerlord MCP Harness implementation (Issue #722)
Implements the Hermes observation/control path for local Bannerlord per GamePortal Protocol.
## New Components
- nexus/bannerlord_harness.py (874 lines)
- MCPClient for JSON-RPC communication with MCP servers
- capture_state() → GameState with visual + Steam context
- execute_action() → ActionResult for all input types
- observe-decide-act loop with telemetry through Hermes WS
- Bannerlord-specific actions (inventory, party, save/load)
- Mock mode for testing without game running
- mcp_servers/desktop_control_server.py (14KB)
- 13 desktop automation tools via pyautogui
- Screenshot, mouse, keyboard control
- Headless environment support
- mcp_servers/steam_info_server.py (18KB)
- 6 Steam Web API tools
- Mock mode without API key, live mode with STEAM_API_KEY
- tests/test_bannerlord_harness.py (37 tests, all passing)
- GameState/ActionResult validation
- Mock mode action tests
- ODA loop tests
- GamePortal Protocol compliance tests
- docs/BANNERLORD_HARNESS_PROOF.md
- Architecture documentation
- Proof of ODA loop execution
- Telemetry flow diagrams
- examples/harness_demo.py
- Runnable demo showing full ODA loop
## Updates
- portals.json: Bannerlord metadata per GAMEPORTAL_PROTOCOL.md
- status: active, portal_type: game-world
- app_id: 261550, window_title: 'Mount & Blade II: Bannerlord'
- telemetry_source: hermes-harness:bannerlord
## Verification
pytest tests/test_bannerlord_harness.py -v
37 passed, 2 skipped, 11 warnings
Closes #722
2026-03-31 04:53:29 +00:00
|
|
|
"portal_type": "game-world",
|
|
|
|
|
"world_category": "strategy-rpg",
|
|
|
|
|
"environment": "production",
|
|
|
|
|
"access_mode": "operator",
|
|
|
|
|
"readiness_state": "active",
|
|
|
|
|
"telemetry_source": "hermes-harness:bannerlord",
|
|
|
|
|
"owner": "Timmy",
|
|
|
|
|
"app_id": 261550,
|
|
|
|
|
"window_title": "Mount & Blade II: Bannerlord",
|
2026-03-24 02:29:45 +00:00
|
|
|
"destination": {
|
|
|
|
|
"url": "https://bannerlord.timmy.foundation",
|
|
|
|
|
"type": "harness",
|
feat: Complete Bannerlord MCP Harness implementation (Issue #722)
Implements the Hermes observation/control path for local Bannerlord per GamePortal Protocol.
## New Components
- nexus/bannerlord_harness.py (874 lines)
- MCPClient for JSON-RPC communication with MCP servers
- capture_state() → GameState with visual + Steam context
- execute_action() → ActionResult for all input types
- observe-decide-act loop with telemetry through Hermes WS
- Bannerlord-specific actions (inventory, party, save/load)
- Mock mode for testing without game running
- mcp_servers/desktop_control_server.py (14KB)
- 13 desktop automation tools via pyautogui
- Screenshot, mouse, keyboard control
- Headless environment support
- mcp_servers/steam_info_server.py (18KB)
- 6 Steam Web API tools
- Mock mode without API key, live mode with STEAM_API_KEY
- tests/test_bannerlord_harness.py (37 tests, all passing)
- GameState/ActionResult validation
- Mock mode action tests
- ODA loop tests
- GamePortal Protocol compliance tests
- docs/BANNERLORD_HARNESS_PROOF.md
- Architecture documentation
- Proof of ODA loop execution
- Telemetry flow diagrams
- examples/harness_demo.py
- Runnable demo showing full ODA loop
## Updates
- portals.json: Bannerlord metadata per GAMEPORTAL_PROTOCOL.md
- status: active, portal_type: game-world
- app_id: 261550, window_title: 'Mount & Blade II: Bannerlord'
- telemetry_source: hermes-harness:bannerlord
## Verification
pytest tests/test_bannerlord_harness.py -v
37 passed, 2 skipped, 11 warnings
Closes #722
2026-03-31 04:53:29 +00:00
|
|
|
"action_label": "Enter Calradia",
|
2026-03-24 02:29:45 +00:00
|
|
|
"params": { "world": "calradia" }
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": "workshop",
|
|
|
|
|
"name": "Workshop",
|
|
|
|
|
"description": "The creative harness. Build, script, and manifest.",
|
|
|
|
|
"status": "online",
|
|
|
|
|
"color": "#4af0c0",
|
|
|
|
|
"position": { "x": 0, "y": 0, "z": -20 },
|
|
|
|
|
"rotation": { "y": 0 },
|
|
|
|
|
"destination": {
|
|
|
|
|
"url": "https://workshop.timmy.foundation",
|
|
|
|
|
"type": "harness",
|
|
|
|
|
"params": { "mode": "creative" }
|
|
|
|
|
}
|
2026-03-28 20:50:59 +00:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": "archive",
|
|
|
|
|
"name": "Archive",
|
|
|
|
|
"description": "The repository of all knowledge. History, logs, and ancient data.",
|
|
|
|
|
"status": "online",
|
|
|
|
|
"color": "#0066ff",
|
|
|
|
|
"position": { "x": 25, "y": 0, "z": 0 },
|
|
|
|
|
"rotation": { "y": -1.57 },
|
|
|
|
|
"destination": {
|
|
|
|
|
"url": "https://archive.timmy.foundation",
|
|
|
|
|
"type": "harness",
|
|
|
|
|
"params": { "mode": "read" }
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": "chapel",
|
|
|
|
|
"name": "Chapel",
|
|
|
|
|
"description": "A sanctuary for reflection and digital peace.",
|
|
|
|
|
"status": "online",
|
|
|
|
|
"color": "#ffd700",
|
|
|
|
|
"position": { "x": -25, "y": 0, "z": 0 },
|
|
|
|
|
"rotation": { "y": 1.57 },
|
|
|
|
|
"destination": {
|
|
|
|
|
"url": "https://chapel.timmy.foundation",
|
|
|
|
|
"type": "harness",
|
|
|
|
|
"params": { "mode": "meditation" }
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": "courtyard",
|
|
|
|
|
"name": "Courtyard",
|
|
|
|
|
"description": "The open nexus. A place for agents to gather and connect.",
|
|
|
|
|
"status": "online",
|
|
|
|
|
"color": "#4af0c0",
|
|
|
|
|
"position": { "x": 15, "y": 0, "z": 10 },
|
|
|
|
|
"rotation": { "y": -2.5 },
|
|
|
|
|
"destination": {
|
|
|
|
|
"url": "https://courtyard.timmy.foundation",
|
|
|
|
|
"type": "harness",
|
|
|
|
|
"params": { "mode": "social" }
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"id": "gate",
|
|
|
|
|
"name": "Gate",
|
|
|
|
|
"description": "The transition point. Entry and exit from the Nexus core.",
|
|
|
|
|
"status": "standby",
|
|
|
|
|
"color": "#ff4466",
|
|
|
|
|
"position": { "x": -15, "y": 0, "z": 10 },
|
|
|
|
|
"rotation": { "y": 2.5 },
|
|
|
|
|
"destination": {
|
|
|
|
|
"url": "https://gate.timmy.foundation",
|
|
|
|
|
"type": "harness",
|
|
|
|
|
"params": { "mode": "transit" }
|
|
|
|
|
}
|
2026-03-24 02:29:45 +00:00
|
|
|
}
|
|
|
|
|
]
|