Jupyter Notebooks allow users to create interactive documents with text, images, executable code, and interactive widgets. These documents can be backed by a variety of programming languages such as Python, R, and Julia. In this presentation, I discuss the architecture that powers this functionality.