[PORTAL] pilot.py — deterministic motor control loop for Morrowind #661

Closed
opened 2026-03-27 16:55:32 +00:00 by perplexity · 32 comments
Member

What

A ~100 line Python script that handles real-time motor control in Morrowind. No LLM. Pure behavior tree. Runs at 100ms tick rate.

Behavior Tree (v1)

every 100ms:
  perception = parse_latest_perception()
  
  if enemy_nearby(perception):
    face_enemy() → attack()
  elif npc_nearby(perception):
    walk_toward_npc() → activate()
  elif door_nearby(perception):
    walk_toward_door() → activate()
  elif goal == "explore":
    walk_forward(2s)
    random_turn()
  else:
    idle()
  
  log_trajectory(perception, action, timestamp)

Reads From

  • OpenMW log via parse_latest_perception() (existing function in mcp_server.py)
  • ~/.timmy/morrowind/current_goal.txt (set by Timmy or reflex layer)

Writes To

  • Game window via send_key() (existing function in mcp_server.py)
  • ~/.timmy/morrowind/trajectories/YYYYMMDD.jsonl (training data)

Runs As

python3 ~/.timmy/morrowind/pilot.py

Standalone process alongside Hermes TUI and llama-server. No dependencies beyond what's already installed.

Acceptance Criteria

  • Pilot explores autonomously — walks, turns, enters doors, approaches NPCs
  • Logs every perception-action pair to JSONL
  • Reads goal from current_goal.txt
  • Doesn't crash when perception data is stale or missing
  • Can be stopped with Ctrl+C cleanly
## What A ~100 line Python script that handles real-time motor control in Morrowind. No LLM. Pure behavior tree. Runs at 100ms tick rate. ## Behavior Tree (v1) ``` every 100ms: perception = parse_latest_perception() if enemy_nearby(perception): face_enemy() → attack() elif npc_nearby(perception): walk_toward_npc() → activate() elif door_nearby(perception): walk_toward_door() → activate() elif goal == "explore": walk_forward(2s) random_turn() else: idle() log_trajectory(perception, action, timestamp) ``` ## Reads From - OpenMW log via `parse_latest_perception()` (existing function in mcp_server.py) - `~/.timmy/morrowind/current_goal.txt` (set by Timmy or reflex layer) ## Writes To - Game window via `send_key()` (existing function in mcp_server.py) - `~/.timmy/morrowind/trajectories/YYYYMMDD.jsonl` (training data) ## Runs As ```bash python3 ~/.timmy/morrowind/pilot.py ``` Standalone process alongside Hermes TUI and llama-server. No dependencies beyond what's already installed. ## Acceptance Criteria - [ ] Pilot explores autonomously — walks, turns, enters doors, approaches NPCs - [ ] Logs every perception-action pair to JSONL - [ ] Reads goal from current_goal.txt - [ ] Doesn't crash when perception data is stale or missing - [ ] Can be stopped with Ctrl+C cleanly
perplexity added the portalp1-important labels 2026-03-27 16:55:32 +00:00
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

Dispatched to claude. Huey task queued.

⚡ Dispatched to `claude`. Huey task queued.
Owner

Dispatched to gemini. Huey task queued.

⚡ Dispatched to `gemini`. Huey task queued.
Owner

Dispatched to kimi. Huey task queued.

⚡ Dispatched to `kimi`. Huey task queued.
Owner

Dispatched to grok. Huey task queued.

⚡ Dispatched to `grok`. Huey task queued.
Owner

Dispatched to perplexity. Huey task queued.

⚡ Dispatched to `perplexity`. Huey task queued.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Member

🔧 gemini working on this via Huey. Branch: gemini/issue-661

🔧 `gemini` working on this via Huey. Branch: `gemini/issue-661`
Member

🔧 grok working on this via Huey. Branch: grok/issue-661

🔧 `grok` working on this via Huey. Branch: `grok/issue-661`
Member

⚠️ grok produced no changes for this issue. Skipping.

⚠️ `grok` produced no changes for this issue. Skipping.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Owner

🔍 Triaged by Huey — needs assignment.

🔍 Triaged by Huey — needs assignment.
Timmy was assigned by Rockachopa 2026-03-28 03:54:22 +00:00
Owner

Closing during the 2026-03-28 backlog burn-down.

Reason: this issue is being retired as part of a backlog reset toward the current final vision: Heartbeat, Harness, and Portal. If the work still matters after reset, it should return as a narrower, proof-oriented next-step issue rather than stay open as a broad legacy frontier.

Closing during the 2026-03-28 backlog burn-down. Reason: this issue is being retired as part of a backlog reset toward the current final vision: Heartbeat, Harness, and Portal. If the work still matters after reset, it should return as a narrower, proof-oriented next-step issue rather than stay open as a broad legacy frontier.
Timmy closed this issue 2026-03-28 04:52:20 +00:00
Sign in to join this conversation.
4 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Timmy_Foundation/the-nexus#661