Remote modules

Status: Later
Milestone: After two-week live test
Spec: Module architecture §8
Package: internal/modules

Goal

Accept module connections from edge devices over Tailscale (e.g. Tararua Meshtastic node) via a plain gRPC listener — same event/RPC shapes as local modules, different transport.

Interfaces

Same RPC as local modules (Emit, Healthcheck, etc.) over gRPC server on [modules.remote].listen.

Implementation notes

  • go-plugin explicitly does not support real networks — separate code path
  • Likely reuse protobuf definitions from local protocol
  • Edge module dials in; core does not spawn remote process
  • Auth via Tailscale identity

Acceptance criteria

  • [ ] Remote source can Emit events over tailnet
  • [ ] Connection loss handled without core crash
  • [ ] Distinct from go-plugin local path in codebase

Dependencies

  • Blocked by: local module runtime, journal

Open questions