Skip to content

Implement Ito v1 local teleoperation loop - #5

Merged
arteeh merged 2 commits into
mainfrom
feat/v1-implementation-subagents
Jul 18, 2026
Merged

Implement Ito v1 local teleoperation loop#5
arteeh merged 2 commits into
mainfrom
feat/v1-implementation-subagents

Conversation

@arteeh

@arteeh arteeh commented Jul 18, 2026

Copy link
Copy Markdown
Member

Summary

  • Implements the Ito v1 local teleoperation loop across the Ito Server, Mock Robot, Pilot Client, and Ito Droid scaffolding.
  • Adds MessagePack protocol helpers, catalog/acquisition/session lifecycle handling, reconnect/resume behavior, watchdogs, and session cleanup.
  • Adds WebRTC seams for pilot input, camera media, and Splat Batch delivery, plus binary Splat Batch encoding/decoding helpers.
  • Adds a plain JavaScript WebXR/A-Frame Pilot Client with in-VR catalog, acquisition, session UI, visual freshness behavior, menu pause, and settings/text resources.
  • Adds Mock Robot and Ito Droid driver scaffolds, local compose setup, acceptance/local-operation docs, and Podman-compatible fixes.

What works locally

  • Server protocol/catalog/acquisition/session lifecycle tests pass.
  • Pilot Client Node tests pass.
  • Mock Robot e2e path works locally over WebSocket/WebRTC for pilot input; camera-media e2e assertions run when optional aiortc/PyAV/H.264 support is installed.
  • Containers build with Podman for server, mock robot, and Ito Droid.
  • Local Podman Compose operation is documented, including workarounds for rootless Podman DNS/SELinux bind-mount behavior.

Still intentionally out of scope / blocked

  • Physical Pico 4 built-in browser verification.
  • Physical Ito Droid smoke test with ROS camera and servo hardware.
  • Representative USB-webcam sequence recording.
  • MASt3R-SLAM vs MonoGS evaluation and final v1 reconstruction-processor selection.
  • Real selected reconstruction processor integration; a Null processor seam exists for now.
  • Full physical acceptance pass.

Test plan

  • pytest -q → 41 passed, 1 skipped
  • cd client && npm test → 15 passed
  • Clean optional-dependency venv previously verified camera-media path: /tmp/ito-test-venv/bin/python -m pytest -q → 42 passed
  • podman build -f server/Dockerfile -t ito-server:test .
  • podman build -f drivers/mock-robot/Dockerfile -t ito-mock-robot:test .
  • podman build -f drivers/ito-droid/Dockerfile -t ito-droid:test .

@arteeh
arteeh force-pushed the feat/v1-implementation-subagents branch from 2f25156 to b26a8a4 Compare July 18, 2026 21:49

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2f25156c70

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread compose.yaml
networks:
default:
name: podman
external: true

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restore Docker-compatible default networking

When a user follows the documented Docker path (docs/local-v1.md still starts with docker compose up --build ito-server pilot-client) on a clean Docker install, this makes the default network depend on a pre-existing network literally named podman. Docker's Compose docs say external networks are not created by Compose and up fails if they are missing (https://docs.docker.com/compose/how-tos/networking/), so the Docker flow now stops before the server/client can start unless the user manually creates a Podman-named Docker network. Keep the normal Compose-created default network, or move this Podman-specific network into an override file.

Useful? React with 👍 / 👎.

Comment thread compose.yaml
- ito-server
environment:
ITO_SERVER_URL: ws://ito-server:8765
ITO_SERVER_URL: ws://host.containers.internal:8765

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep the Docker mock robot hostname reachable

When the mock profile is run with Docker, the mock driver now connects to Podman's host.containers.internal name instead of the Compose service DNS name that Docker provides for ito-server. Docker's host-service documentation lists host.docker.internal for host access (https://docs.docker.com/desktop/features/networking/networking-how-tos/), and this compose file has no extra_hosts or Docker override for host.containers.internal, so after the network issue is addressed the documented Docker mock command will still leave the robot unable to register and reconnecting forever. Keep ws://ito-server:8765 for Docker or make the Podman hostname an override/env default.

Useful? React with 👍 / 👎.

@arteeh
arteeh merged commit 3d77470 into main Jul 18, 2026
1 check passed
@arteeh
arteeh deleted the feat/v1-implementation-subagents branch July 19, 2026 00:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant