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
◈ The Nexus — Timmy's Sovereign Home
The Nexus is Timmy's canonical 3D/home-world repo.
It is meant to become two things at once:
- a local-first training ground for Timmy
- a wizardly visualization surface for the living system
Current Truth
As of current main, this repo does not ship a browser 3D world.
In plain language: current main does not ship a browser 3D world.
A clean checkout of Timmy_Foundation/the-nexus on main currently contains:
- Python heartbeat / cognition files under
nexus/ server.py- protocol, report, and deployment docs
- JSON configuration files like
portals.jsonandvision.json
It does not currently contain an active root frontend such as:
index.htmlapp.jsstyle.csspackage.json
Serving the repo root today shows a directory listing, not a rendered world.
One Canonical 3D Repo
Timmy_Foundation/the-nexus is the only canonical 3D repo.
In plain language: Timmy_Foundation/the-nexus is the only canonical 3D repo.
The old local browser app at:
/Users/apayne/the-matrix
is legacy source material, not a second repo to keep evolving in parallel. Useful work from it must be audited and migrated here.
See:
LEGACY_MATRIX_AUDIT.md
Why this matters
We do not want to lose real quality work. We also do not want to keep two drifting 3D repos alive by accident.
The rule is:
- rescue good work from legacy Matrix
- rebuild inside
the-nexus - keep telemetry and durable truth flowing through the Hermes harness
- keep OpenClaw as a sidecar, not the authority
Verified historical browser-world snapshot
The commit the user pointed at:
0518a1c3ae3c1d0afeb24dea9772102f5a3d9a66
still contains the old root browser files (index.html, app.js, style.css, package.json, tests/), so it is a useful in-repo reference point for what existed before the later deletions.
Active migration backlog
#684sync docs to repo truth#685preserve legacy Matrix quality work before rewrite#686rebuild browser smoke / visual validation for the real Nexus repo#687restore a wizardly local-first visual shell from audited Matrix components#672rebuild the portal stack as Timmy → Reflex → Pilot#673deterministic Morrowind pilot loop with world-state proof#674reflex tactical layer and semantic trajectory logging#675deterministic context compaction for long local sessions
What gets preserved from legacy Matrix
High-value candidates include:
- visitor movement / embodiment
- chat, bark, and presence systems
- transcript logging
- ambient / visual atmosphere systems
- economy / satflow visualizations
- smoke and browser validation discipline
Those pieces should be carried forward only if they serve the mission and are re-tethered to real local system state.
Running Locally
Current repo truth
There is no root browser app on current main.
Do not tell people to static-serve the repo root and expect a world.
What you can run now
python3 server.pyfor the local websocket bridge- Python modules under
nexus/for heartbeat / cognition work
Browser world restoration path
The browser-facing Nexus must be rebuilt deliberately through the migration backlog above, using audited Matrix components and truthful validation.
One 3D repo. One migration path. No more ghost worlds.