Add HTTP server

Acts the same way as CLI, except instead of Exiting on failure it signals 404.
why can't this code be shared between the cli and http server?