Skip to content

About this article

  • Audience: Contributors and integrators who name shadows, MQTT topics, hostnames, or API surfaces
  • Goal: After reading, you can pick canonical Ghost Protocol names and avoid drift across firmware, proxy, and docs
  • Type: Reference

Summary

Ghost Protocol uses Shadow as the single product name for edge agents, MQTT namespaces, public UI hostnames, and proxy workers. Fleet members are identified by logical site roles and stable MQTT device_id values—not physical location labels or personal nicknames.

Prerequisites

Shadow-only naming

Edge agents, MQTT mirror namespaces, public hostnames, and Cloudflare Worker names all use Shadow. Do not introduce alternate product names for the Shadow fleet or edge agent role.

ConceptCanonical name
Shadow 1 edge agentShadow Device
MQTT mirror namespaceshadow/{device_id}/… (alongside devices/{device_id}/…)
Public UI hostnameshadow.ghostprotocol.us
Cloudflare Workershadow-proxy
Legacy cloud upload API/api/shadow/*

Fleet identifiers

Use role labels in docs, scripts, and proxy queries. Reserve physical placement names for private operator handoff.

Role labelMQTT device_idTypical use
site-role-ashadow1Canary shadow, first soak gate
site-role-bshadow2Secondary shadow, cross-site mesh tests

Device reachability uses <device-ip> on the lab LAN. The central proxy aggregates registry and MQTT at https://<phantom-proxy>:8788.

Interfaces and ports

LayerPort / pathNotes
Shadow MCP (on device):8765A2A tool surface; health and recording probes
Phantom VMS proxy (host):8788Fleet registry, MQTT ingest, MCP forward
MQTT broker (lab):1883Telemetry and status; WSS bridge optional
Hermes peer mesh:11555UDP discovery with HMAC
Peer sidecar:8777mTLS peer queries

Replace PHANTOM_PROXY with https://<phantom-proxy>:8788 in curl examples. SSH fallbacks prompt for YOUR_DEVICE_PASSWORD.

Topic and API conventions

  • MQTT: Publish under devices/{device_id}/…; mirror read-only views under shadow/{device_id}/….
  • Proxy: Target shadows with ?target=<device-ip> or ?shadow=site-role-a on playback routes.
  • Containers: Sovereign oakapp images use ghost_core, ghost_agent_v2, and entrypoint service names—do not rename in public docs.

Anti-patterns

AvoidUse instead
Physical site labels (door or cabin names)site-role-a, site-role-b
Alternate agent names (Casper, Phantom Device)Shadow Device
Hard-coded LAN IPs in docs<device-ip>
Live UUIDs or soak percentages in prose[operator-artifacts] or handoff

Next steps

Operator depth

Live fleet state and harness evidence live in private operator handoff (not published) (private).