Connect locally or over SSH#

QuantEM.GPU Remote always speaks the same loopback HTTP protocol. The client location determines whether an SSH transport is needed.

Client on the CUDA host#

Start the service on loopback and connect directly:

http://127.0.0.1:8780

This is useful for a local process boundary, integration tests, and service profiling. It does not make the service a different CUDA backend.

Client on another machine#

Keep the service bound to loopback on the CUDA host. From the client machine, create a local SSH port forward:

ssh -N -L 8780:127.0.0.1:8780 cuda-host

The client still connects to http://127.0.0.1:8780; SSH transports that connection to the service host and provides authentication and encryption. Choose a different local port if 8780 is already occupied.

Connection ownership#

The transport owns authentication, encryption, reconnect behavior, and port forwarding. The QuantEM.GPU protocol owns scientific requests, typed errors, array payloads, and provenance. Do not place credentials in dataset URLs, request bodies, logs, or cache identities.

A client should first read /api/browse/capabilities, validate the protocol name/version and implementation revision, then enable only the operations the service advertises. A network success is not scientific compatibility.

Failure behavior#

Treat these conditions separately:

Condition

Client response

tunnel or service unavailable

preserve current result and offer reconnect

protocol/version mismatch

stop before issuing scientific work

source not ready

show the typed readiness reason

GPU capacity rejection

retain the requested plan; ask for an explicit policy change

stale source identity

invalidate dependent cached products

Never convert a connectivity or capacity failure into silent CPU execution, scan cropping, detector binning, or dtype reduction.