Shelf: web server

CC @sethladd 
We'd need to add an extra dependency to `args`. Let's land this as-is and discuss in a follow-up.