I want to write a plugin that is executed for each call to a page (non admin).
Is that possible?
You could register an IActionFilter or IResultFilter (depending on your requirements).
They do something similar in the Alloy demo site to add some layout information to the model, take a look at the PageContextActionFilter.cs: here they identify it was a page using the IPageViewModel interface. You can see how that is registered in the solution as well.
Hopefully it provides some inspiration.