frontend: add discovery and explicit subscription