Federation
Synth federates via the signals-protocol
(components/signals-protocol), never via direct integration with peer
engines’ native surfaces.
The core law (learned 2026-07-03, first live cross-engine call): gRPC
method paths embed package+service, so a wire-identical peer still returns
UNIMPLEMENTED if only the native service is registered. Therefore
serve() registers both servicers on one port:
synth.engine.SynthEngine— the native, project-internal surface (src/synth/engine/proto/synth_engine.proto);zndx.engine.v1.Engine— the shared federation face (Complete/Status/Remediate).
Shared-host lattice
| Engine | gRPC port | vLLM range |
|---|---|---|
| gaius | 50051 | 8080+ |
| aegir | 50151 | 8100+ |
| atelier | 50251 | 8200+ |
| synth | 50351 | 8300–8399 |
Ratifying synth’s row in the signals-protocol adopters table is a pending follow-up (additive change to the submodule’s spec, PR’d upstream).
GPU co-tenancy uses the advisory lease directory /tmp/zndx-gpu-leases;
capability requests are forwarded to peers in preference to moving GPUs.