Local ingest ports
The agent can open local ports to receive data from applications on the same host. Both are off by default and bind to loopback.
Custom application metrics
Let apps on the host POST their own KPIs (namespaced app.*), which the agent forwards up
the WebSocket:
wakora --custom-metrics-port 9099
or:
[agent]
custom-metrics-port = 9099
Namespace, cardinality and payload size are enforced so a noisy app cannot blow up your metric count.
OpenTelemetry spans (APM)
For method-level APM, the agent runs a local OTLP receiver that accepts spans over HTTP, in both JSON and protobuf. The instrumented runtime exports to this port and the agent forwards the spans up the same WebSocket, keeping the single-outbound-connection model. You rarely set this by hand: when an APM definition targets the host, the agent brings the receiver up itself and persists the setting. The same local listener also accepts the RUM beacons relayed by the PHP prepend (see RUM).
Because it speaks standard OTLP, the receiver accepts spans from any OpenTelemetry SDK, not only the PHP and .NET runtimes the agent provisions. If you already instrument a Java, Node, Python, or Go service with OTel, point its exporter at this port and the spans flow through the same pipeline.
wakora --otlp-port 4318
or:
[agent]
otlp-port = 4318
For containerized apps that cannot reach loopback, bind the receiver on an additional
address, the host's own address on the Docker bridge (172.17.0.1 on a default install):
[agent]
otlp-port = 4318
otlp-bind = 172.17.0.1
The bind stays on the bridge IP rather than 0.0.0.0, so only same-network containers can
reach it. See APM for the full pipeline.