reserve_session() only accepts a single discovery_url, so selecting across a few orchestrators needs either a remote signer + /discover-orchestrators aggregator, or dropping to the low-level API.
The list support already exists one layer down: runner_selector() / discover_orchestrator_runners() / orchestrator_discovery_urls() all accept orchestrators: Sequence[str] | str (list or comma-delimited), fan out each /discovery, and select in parallel. reserve_session() just does not forward it.
Why
Test/select across a chosen set of orchs without standing up a signer + aggregator (funded wallet, container, and a capability filter that drops generic apps). Direct per-orch discovery, so it works with any app id.
Today
Possible only via runner_selector(orchestrators=[...]), which returns a RunnerSelectionCursor and forces re-implementing the cursor -> LiveRunnerSession extraction that reserve_session() already does. Or through a remote signer discovery endpoint through the OrchAddr flag. However this has been broken right now (see livepeer/go-livepeer#3938 (comment)).
Scope
Dev/testing ergonomics, not a new production path: direct discovery only (no registry, no price-capping), not a replacement for signer aggregation.
reserve_session()only accepts a singlediscovery_url, so selecting across a few orchestrators needs either a remote signer +/discover-orchestratorsaggregator, or dropping to the low-level API.The list support already exists one layer down:
runner_selector()/discover_orchestrator_runners()/orchestrator_discovery_urls()all acceptorchestrators: Sequence[str] | str(list or comma-delimited), fan out each/discovery, and select in parallel.reserve_session()just does not forward it.Why
Test/select across a chosen set of orchs without standing up a signer + aggregator (funded wallet, container, and a capability filter that drops generic apps). Direct per-orch discovery, so it works with any app id.
Today
Possible only via
runner_selector(orchestrators=[...]), which returns aRunnerSelectionCursorand forces re-implementing the cursor ->LiveRunnerSessionextraction thatreserve_session()already does. Or through a remote signer discovery endpoint through theOrchAddrflag. However this has been broken right now (see livepeer/go-livepeer#3938 (comment)).Scope
Dev/testing ergonomics, not a new production path: direct discovery only (no registry, no price-capping), not a replacement for signer aggregation.