Skip to main content

Ports & protocols reference

This is the operations and networking reference for a cell: every listener, its protocol, what it is for, and how it authenticates. It is organized by the nine services and verified against the shipped per-service configuration.

Two rules from the services overview govern the whole table:

  • The node service is the only front door. Every external client terminates on a node listener and passes a deny-by-default gate before any backend is reached.
  • No backend service is exposed externally in its own right. Backend HTTP/gRPC listeners bind loopback (clear, intra-cell) or an internal mutual-TLS interface; a subset also advertise a mutual-TLS interface on the fabric for cell-to-cell traffic only.

The port-allocation convention​

Backend services follow one numbering convention, which makes the whole cell legible at a glance:

FamilyPatternExample (data)
Service HTTP, clear (loopback)9<svc>009600
Service HTTP, mutual TLS9<svc>439643
Service gRPC, clear (loopback)59<svc>0059600
Service gRPC, mutual TLS59<svc>4359643

The <svc> digit runs 1=security, 2=admin, 3=system, 4=metrics, 5=messaging, 6=data, 7=storage, 8=compute, 9=node (internal). The node service's external listeners sit in the 8xxx range instead, so the public front door is never confused with an internal control port.

Figure P1: the three network planes. External clients (neutral) reach only the node front door (amber, deny-by-default); backends (filled) bind loopback or internal mTLS; the fabric plane (outlined) carries cell-to-cell mutual-TLS traffic between backends only. The dotted external→backend edge is the path that does not exist. Ceiling: ports shown are the shipped configuration defaults; an operator may rebind or disable any of them.

Table equivalent

PlaneWho uses itBindingAuth
Front doorExternal clientsnode 8xxx / gateway portsdeny-by-default; TLS or mTLS
Backend controlIntra-cell callers9x00 / 59x00 loopbacklocal
FabricPeer cells only9x43 / 59x43 on all interfacesmutual TLS

node​

The single external front door. Public HTTP carries REST, GraphQL, the MCP tool server, static hosting, and the edge REST/WebSocket/DoH/bundle/discovery routes.

PortProtocolBindPurposeAuth
8080HTTP0.0.0.0 (public)Public REST / GraphQL, MCP tool server, static hosting, edge REST/WS/DoH/bundle/discoveryDeny-by-default; app-layer authn
8443HTTPS0.0.0.0 (public)Same, over TLSDeny-by-default; TLS
9900HTTP127.0.0.1Internal control planeLoopback
9943HTTPS0.0.0.0 (internal)Internal control planeMutual TLS (client cert required)
59900gRPC127.0.0.1Internal control planeLoopback
59943gRPC/TLS0.0.0.0 (internal)Internal control planeMutual TLS
9950PostgreSQL wire0.0.0.0 (public)External SQL gateway → data engine; in-band SSL negotiation on one portrequire_tls configurable; proxied
59950Arrow Flight SQL (gRPC)0.0.0.0 (public)External columnar gateway → data engine (clear)Deny-by-default; proxied
59951Arrow Flight SQL/TLS0.0.0.0 (public)External columnar gateway → data engine (TLS)TLS; enabled when certs configured
8444HTTPS0.0.0.0 (public)Edge device enrollment listener; one route (enroll)TLS, no client cert (device has none yet)
8445HTTPS0.0.0.0 (public)Edge device operational listener; all enrolled-device routesMutual TLS (client cert required)
8446gRPC/TLS0.0.0.0 (public)Edge device gRPC bootstrap: Enroll and RefreshCert onlyTLS with the node certificate, no client cert. Not published in discovery; edge config only
8447gRPC/mTLS0.0.0.0 (public)Edge device gRPC operational: every gateway RPC, plus the discovery-mapping leaf serviceMutual TLS with the enrolled device certificate
9922SFTP (SSH)0.0.0.0File-transfer gatewayNot-wired: off by default; see below
8883MQTTEdge MQTT outbound bridgeNot-wired: binds no port; see below
2222SSH0.0.0.0Edge SSH tunnel, now carrying device mutual TLS to the node front door (8447)Not-wired: off by default; see below
Not-wired node surfaces
  • SFTP (9922) ships disabled. When enabled it binds, but the shipped authenticator denies every credential, so it accepts the connection, refuses the handshake, and closes. Exposure with no capability until a real authenticator is supplied.
  • MQTT (8883) is an outbound client bridge that dials an external broker; it binds no listener, and the configured port is read by nothing. Set the broker host/port to use it.
  • SSH tunnel (2222) ships disabled and cannot serve a device as shipped (the only cert issuer emits principals the validator rejects). It refuses to bind without a configured signing CA.
A device reaches a node, never a cell

The node service is the only device path. An Edge Agent dials the node's own address, and the node verifies the call with the cell's own guard before forwarding it over the intra-node fabric, carrying the device identity as an assertion only the node can mint.

PurposePortAuthentication
Enroll, refresh a certificate8446 gRPCNode certificate, no client cert (the device has none yet)
Everything else, once enrolled8447 gRPCMutual TLS with the enrolled device certificate
HTTPS fallback8444 / 8445As above, when a gRPC leg cannot be reached

The cell listeners now refuse devices. Ports 59350 and 59353 narrow to loopback and reject any device call that did not arrive through the front door. A direct setting re-opens them for in-cell and lab use, and any unrecognised value falls back to the refusing behaviour, so a typo closes the door rather than opening it.

Two details worth carrying into a deployment plan:

  • Discovery returns node addresses only. Enrollment and endpoint discovery publish the node's fully-qualified name, gRPC first and HTTPS second. If the node has no name on record the list comes back empty rather than falling back to a cell host.
  • The trust bundle is narrow. Enrollment returns the organization's device and server certificate authorities, not its root. The server authority issues server-authentication certificates only, so including it lets a device verify the node without widening what it will trust.
  • A first-time device trusts the node from its enrollment token. The token carries the fingerprints of the organization's active server authorities, so a sovereign or air-gapped device needs no bundle staged on it beforehand. The node presents its full certificate chain on the device listeners. See connect an Edge Agent.

system​

PortProtocolBindPurposeAuth
9300HTTP127.0.0.1Service control planeLoopback
9343HTTPS0.0.0.0 (internal)Service control plane; inter-cellMutual TLS
59300gRPC127.0.0.1Service control planeLoopback
59343gRPC/TLS0.0.0.0 (internal)Service control plane; inter-cellMutual TLS
59350gRPC0.0.0.0 (cell-local)Edge-fleet bootstrap channel: admits only device enroll + certificate refresh. Cell-internal; not the external device pathClear; every other RPC rejected UNAUTHENTICATED
59353gRPC/TLS0.0.0.0 (cell-local)Edge-fleet operational channel: full fleet surface. Cell-internal; not the external device pathMutual TLS; per-device rate limit after identity verified

security​

PortProtocolBindPurposeAuth
9100HTTP127.0.0.1Service control plane (retains crypto-service port for compatibility)Loopback
9143HTTPS0.0.0.0 (internal)Service control planeMutual TLS
59100gRPC127.0.0.1Service control planeLoopback
59143gRPC/TLS0.0.0.0 (internal)Service control planeMutual TLS

storage​

The S3-compatible and native object API rides the storage HTTP listeners; cross-cell replication and repair (StorageReplication) rides the gRPC listeners.

PortProtocolBindPurposeAuth
9700HTTP127.0.0.1Object / block API (S3-compatible + native), intra-cellLoopback
9743HTTPS0.0.0.0 (fabric)Object / block API for peersMutual TLS
59700gRPC127.0.0.1Replication / repair, intra-cellLoopback
59743gRPC/TLS0.0.0.0 (fabric)StorageReplication: cross-cell copy, repair, relayMutual TLS

data​

Internal database wire protocols bind loopback for intra-cell callers; the multi-cell mesh binding uses mutual TLS. External clients reach these only through the node gateways (9950 / 59950).

PortProtocolBindPurposeAuth
9600HTTP127.0.0.1Service control planeLoopback
9643HTTPS0.0.0.0 (fabric)Service control plane; inter-cellMutual TLS
59600gRPC127.0.0.1Service control planeLoopback
59643gRPC/TLS0.0.0.0 (fabric)Service control plane; inter-cellMutual TLS
9650PostgreSQL wire127.0.0.1 (mesh IP multi-cell)Internal SQL engine surface; in-band SSL negotiationsystem_token; mTLS on mesh
59650Arrow Flight SQL (gRPC)127.0.0.1 (mesh IP multi-cell)Internal columnar engine surfacebearer / system_token
RESP (Redis / Valkey-compatible)intra-cellData-structure engine surfaceSee below
The RESP surface port

The data-structure engine speaks a Redis / Valkey-compatible protocol, and its configuration governs client tracking and Redis-cluster protocol emulation (emulation off by default). A single fixed standalone RESP listen port is not pinned in the service configuration reviewed here, the surface is intra-cell, and external SQL/columnar access is via the node gateways. Treat the RESP port as deployment-configured, not a shipped constant.

messaging​

PortProtocolBindPurposeAuth
9500HTTP127.0.0.1Pub/sub + streaming control, intra-cellLoopback
9543HTTPS0.0.0.0 (fabric, cell FQDN)Pub/sub + streaming for peersMutual TLS
59500gRPC127.0.0.1Replication / streaming, intra-cellLoopback
59543gRPC/TLS0.0.0.0 (fabric, cell FQDN)Cross-cell topic replicationMutual TLS
5672AMQP: (outbound)Transport bridge to external AMQP brokerNot-wired: off by default; binds no listener
1883MQTT: (outbound)Transport bridge to external MQTT brokerNot-wired: off by default; binds no listener

compute​

PortProtocolBindPurposeAuth
9800HTTP127.0.0.1Service control planeLoopback
9843HTTPS0.0.0.0 (internal)Service control planeMutual TLS
59800gRPC127.0.0.1Service control planeLoopback
59843gRPC/TLS0.0.0.0 (internal)Service control planeMutual TLS

metrics​

PortProtocolBindPurposeAuth
9400HTTP127.0.0.1Telemetry / metrics, intra-cellLoopback
9443HTTPS0.0.0.0 (fabric, cell FQDN)Metrics roll-up to peersMutual TLS
59400gRPC127.0.0.1(Disabled by default)Loopback
59443gRPC/TLS0.0.0.0 (fabric)(Disabled by default)Mutual TLS

Metrics roll-up rides the HTTP surface; the gRPC pair ships disabled.

admin​

Out-of-band control and diagnostics. HTTP only, no gRPC, no fabric data-plane surface; the service holds no primary state.

PortProtocolBindPurposeAuth
9200HTTP127.0.0.1Local diagnosticsLoopback
9243HTTPS0.0.0.0 (internal)Out-of-band controlMutual TLS (client cert required)

The surfaces the question always asks​

SurfaceWhere it livesPort(s)Notes
PostgreSQL wiredata engine (internal) → node gateway (external)9650 internal · 9950 externalIn-band SSL negotiation on a single port
Redis wire (RESP)data data-structure enginedeployment-configuredRedis/Valkey-compatible; cluster emulation off by default
S3 / objectstorage service HTTP9700 intra-cell · 9743 fabricS3-compatible + native, one listener pair
Arrow Flight SQLdata engine (internal) → node gateway (external)59650 internal · 59950/59951 externalgRPC / Arrow columnar
gRPC inter-cellstorage / data / messaging / system, fabric59743 · 59643 · 59543 · 59343Mutual TLS; StorageReplication is the storage one
Edge-fleet gRPCsystem service, cell-local59350 bootstrap · 59353 operationalSplit bootstrap (clear, enroll/refresh only) vs operational (mTLS)
Admin out-of-bandadmin service9200 loopback · 9243 mTLSRead-only aggregation; owns no database

In the deployment matrix​

The port map is identical in every corner. Single-cell, the fabric mutual-TLS listeners (9x43 / 59x43) are present but idle. Multi-cell, they carry replication, roll-up, and scale-out between peers. Cloud-enabled, external transport bridges and cloud connectors may be enabled on node and messaging. Sovereign / air-gapped, no listener on any boot path phones home, and a peer that cannot be reached is an absent edge, not a failed one, the local cell's own ports stay fully serviceable.