eth-providerreadme that touches on some of this stuff. Frame has a ws (ws://127.0.0.1:1248) and http (http://127.0.0.1:1248) JSON-RPC endpoints that you can connect to manually using your own provider clients.
eth-providersolves this issue by using both and falling back to http when needed. If you connect manually to these endpoints without
eth-providerthis compatibility is the main gotcha you’ll run into.
eth-providerwill return the injected provider when one is available instead of trying to connect to Frame. The injected provider could be Frame's extension or another extension/browser injecting the provider.
web3_clientVersionwhich will return "Frame/" and the version... currently