All host bindings are loopback-only (127.0.0.1) except fletch-web, which binds 0.0.0.0:3000 intentionally — it is only started when Remote Access is enabled and WyldeLink gates network reach. Mobile clients connect through the WyldeLink WireGuard tunnel; the gateway binds to the tunnel IP only, with per-peer bearer auth on top. Routes are documented openly — see the security model.
Adding a service
A new service needs to provide three endpoints:
GET /health → {"status": "healthy"}
GET /api/tools → tool definitions
POST /api/<tool_id> → executes the tool, returns the result
Then register the named pipe at startup:
from shared.ipc import register_pipe
register_pipe("wylde-my-service")
Add the service to tool-registry's discovery list and to wylde-launcher's process manifest, drop a docs/_data/components/my-service.yaml entry, and run python docs/generate.py. That's the full loop.