erchef: The top-level erchef repository is used to build self-contained OTP releases of erchef. You can build a OTP release of erchef by running make rel in the erchef directory. This will download all dependencies, compile Erlang code, and put (almost) everything needed into rel/erchef. What isn't included? Configuration for erchef is handled by omnibus installer (omnibus-chef-server) which is also responsible for installing and configuring all of the supporting components of the Chef Server.
chef_wm: The "wm" stands for webmachine. This OTP application contains the core of the erchef REST API implemented on top of the Webmachine toolkit. The URL routing that matches URLs with Erlang modules handling requests for those URLs is defined in priv/dispatch.conf. The README file in that repo has a more detailed overview.
chef_objects: Contains Erlang type definitions for core Chef objects and serialization code for going between the Erlang representation and JSON.
chef_authn: Implements Chef's HTTP request signing and verification protocol. This library can be leveraged to build Erlang-based client tools that interact with the Chef Server or new server add-ons that need to authenticate requests as erchef does.
chef_index: Handles erchef's interaction with Solr and the RabbitMQ queue used to for the indexing data flow.
chef_db: All of erchef's interaction with the RDBMS goes through chef_db. The base schema and prepared queries can be found in the priv directory of this project. This project uses sqerl as a light-weight RDBMS abstraction layer and pooler for database connection pooling.
chef_certgen: Used to generate RSA key pairs and X.509 certificates. Includes a small NIF library that wraps OpenSSL code to support Chef's desired formats.
depsolver: A backtracking dependency solver for resolving cookbook version dependencies.
fast_log: A simple logging library. We intend to revisit this and will likely replace fast_log with lager.
stats_hero: Supports aggregating metrics at the HTTP request level, sending to a StatsD server over UDP, and providing request-level metrics for request logging.