A controller provides a method for injecting actions into the learning agents system from some other existing behavior, e.g. we may want to gather demonstrations from a human or AI behavior tree controlling our agent(s) for imitation learning purposes.