Add Agent interface

Still WIP, but there you go @binary132