The general architecture of PRM: recipes are downloaded from external providers, incorporated into the local site repository, and made available to puppet for application on individual host.
Recipes consist of three different pieces of information: one or more puppet manifests, configuration files needed by those manifests, and some prm-specific metadata. All these files are kept in a Mercurial repository; in a way, the recipe is that repository.
PRM maintains a site repository, consisting of clones of the upstream Mercurial repositories of the original recipes; in other words, the recipes in the local repositories are branches of the upstream recipes. This is a very important aspect of PRM, since it makes it possible to modify recipes locally and still consume updates from upstream.