Help understanding the architecture of Companion / Remote URLs

Hi there -
I’m having trouble groking how things are actually supposed to work. On the examples here (, we can see a bunch of 3rd party plugins. The one I’ll use for this post in particular is the Link option.

So, am I understanding it right when I say that to use this feature, a Companion server/endpoint needs to be set up? If so, then what is the point of Companion? Is it to actually make the request to the remote URL, and then pass the content back to Uppy?

We store all our uploaded files on S3, but I’m just having trouble understanding what I’m actually supposed to set up.

  • Am I supposed to set up a proxy server to make requests and return content?
  • Am I supposed to specify my S3 bucket so that Uppy/Companion knows where to put that remote URL’s content?

I’m struggling with the flow, and how I should set things up to accomplish the Link option.