Watch Docker events (or poll the API) for containers publishing ports on the host, and map each published port the same way host ports are mapped. Container name becomes the notification label. Opt-out via a container label, e.g. ts-autoserve.skip=true. Keep the model 'one host, one port per service' — this is deliberately not tsdproxy's 'one tailnet device per container'.
Watch Docker events (or poll the API) for containers publishing ports on the host, and map each published port the same way host ports are mapped. Container name becomes the notification label. Opt-out via a container label, e.g. ts-autoserve.skip=true. Keep the model 'one host, one port per service' — this is deliberately not tsdproxy's 'one tailnet device per container'.