Self-assembly is a process in which components in a system organize themselves into structures and patterns without human intervention. Though design principles for self-assembly for systems at global or local equilibrium have seen many advances recently, there has not been much progress for self-assembly far from equilibrium. Indeed, many essential processes in biophysics and chemistry occur far from equilibrium. The self-assembly of lipids into membranes, the growing of nanowires using the VLS technique, the making of many pro-drugs, vaccines, and the self-healing of intelligent materials are all examples of non-equilibrium self-assembly. Design principles for non-equilibrium self-assembly can potentially revolutionize our approach to making materials and understanding non-equilibrium processes. In this work, we attempt to derive general design principles for non-equilibrium self-assembly with ideas from stochastic thermodynamics. First, we will develop a general framework to study self-assembly with master equations. We then used ideas from stochastic thermodynamics to write down a general form for the energy dissipation for these processes. The energy dissipation form then allows us to write bounds that can be used to constraints possible structures that the assembly will adopt under a non-equilibrium drive. In particular, using this framework, we can predict the necessary driving force for a phase transition as shown in Chapter 3 or growth instability in Chapter 4. We then further expand our frameworks to systems with multiple drive forces and systems under periodic drive in the later chapters.