SDK harnesses require a common set of gRPC services to operate. The role of the harness manager is to provide a uniform interface that multiplexes data streams and auxiliary data between SDK environments and operators within a given job.
Note that multiple operators may communicate with a single SDK environment to amortize container initialization cost. Environments are not shared between different jobs.
The initial implementation will shell out to local docker, but the harness manager should eventually support working with externally-managed environments (e.g., created by Kubernetes).