Ensemble is a toolkit for building reliable distributed applications. It has been available for free public release for over 3 years now and has been used in a number of commercial and research systems. Ensemble provides a library of protocols that can be used for quickly building complex distributed applications. An application registers 10 or so event handlers with Ensemble, and then the Ensemble protocols handle the details of reliably sending and receiving messages, transferring state, implementing security, detecting failures, and managing reconfigurations in the system.