That's right @Austin Weisgrau, agents are essentially dispatchers that live in your cloud env and make the bridge between Prefect Cloud and your internal infrastructure. Prefect Cloud only manages the flow queue and stores the data (logs, task and flow statuses etc) that the agent sends it.
Agents poll the queue using the Prefect REST API (which is great, as you don't need to give Prefect Cloud any kind of access to your cloud env for that to happen), pull pending flow run requests, then dispatch those requests to be run in a job runner. Jobs can be run in the agent's VM/container itself but the agent can also create, for instance, Kubernetes jobs to run those for you. That's the setup we've been using here actually.