rewrite puppet mode to use named sockets and pass descriptors to simplify the engine