Skip to content

Replace RemoteTerm meshcore poller with pyMC-Repeater#108

Merged
d3mocide merged 1 commit into
mainfrom
claude/intelligent-carson-ksr846
Jun 15, 2026
Merged

Replace RemoteTerm meshcore poller with pyMC-Repeater#108
d3mocide merged 1 commit into
mainfrom
claude/intelligent-carson-ksr846

Conversation

@d3mocide

Copy link
Copy Markdown
Owner

$(cat <<'EOF'

Summary

  • Drops the RemoteTerm HTTP/WebSocket integration and the direct-device meshcore_pymc poller in favour of the pyMC-Repeater REST + SSE API
  • Rewrites poller/pollers/meshcore.py to poll /api/adverts_by_contact_type, /api/recent_packets, and /api/stats; streams real-time events from /api/companion/events SSE when a companion identity is configured
  • Replaces normalize_remoteterm_contact() with normalize_pymc_repeater_advert() mapping pyMC-Repeater advert fields (public_key, name, gps_lat/lon, last_advert_timestamp, out_path_len)
  • Auth is now X-API-Key header; embed the key in the source URL as http://API_KEY@host:port
  • Deletes poller/pollers/meshcore_pymc.py (direct TCP/serial device poller, superseded by the repeater daemon)
  • Updates the admin debug probe endpoint to check pyMC-Repeater endpoints instead of RemoteTerm
  • Updates config/sources.example.yml with the new config format

Test plan

  • Set type: meshcore source URL to a running pyMC-Repeater instance and verify nodes appear in the entity store
  • Confirm /api/v1/mesh/links populates from /api/recent_packets SNR data
  • Confirm /api/v1/mesh/status reflects the repeater's /api/stats health
  • If a companion identity is configured on the repeater, verify SSE messages arrive in the mesh messages panel
  • Hit POST /admin/debug/remote-feeds/probe with source_type=meshcore and verify the three checks (stats, adverts, packets) are returned
  • Confirm python3 -m py_compile passes on all modified files (already verified)

https://claude.ai/code/session_01WfXRRhUewL5qjgpk6PdaSD
EOF
)


Generated by Claude Code

Drops the RemoteTerm HTTP/WebSocket integration and the direct-device
meshcore_pymc poller in favour of the pyMC-Repeater REST + SSE API.

- poller/pollers/meshcore.py: complete rewrite targeting pyMC-Repeater.
  Periodic REST poll of /api/adverts_by_contact_type (node discovery),
  /api/recent_packets (SNR/link metrics), and /api/stats (health).
  SSE stream from /api/companion/events for real-time advert, message,
  and path-update events; auto-discovers companion via /api/companion/index.
  Auth via X-API-Key extracted from URL username (http://APIKEY@host:port).

- poller/pollers/meshcore_pymc.py: deleted (superseded by the repeater).

- poller/normalizers/mesh_node.py: replace normalize_remoteterm_contact()
  with normalize_pymc_repeater_advert() mapping pyMC-Repeater advert fields
  (public_key, name, gps_lat, gps_lon, last_advert_timestamp, out_path_len).

- poller/main.py: remove MeshCorePymcPoller import and instantiation.

- backend/routers/admin_debug.py: update meshcore probe to check
  /api/stats, /api/adverts_by_contact_type, and /api/recent_packets
  instead of RemoteTerm endpoints; switch auth to X-API-Key header;
  add extra_headers param to _http_get_check.

- config/sources.example.yml: update meshcore entry to reference
  pyMC-Repeater with API-key auth instructions.

https://claude.ai/code/session_01WfXRRhUewL5qjgpk6PdaSD
@d3mocide d3mocide marked this pull request as ready for review June 15, 2026 04:10
@d3mocide d3mocide merged commit f8bb967 into main Jun 15, 2026
6 checks passed
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.

2 participants