What I think we’re missing (on the proxy side) is the split between “provider” (the thing that does the action: smart_proxy_ansible, smart_proxy_rex_ssh) and “transport” (the thing that’s only responsible for the transport: ssh) as both providers will end up doing ssh in one way or another (and rely on common configs, keys, etc).
But then again Ansible and REX-SSH are the only ones sharing a transport?