Allow agents to run concurrently

This pull request is a work in progress, intended to start a discussion.