Several NASA and DoD missions are envisioned that will utilize distributed, autonomous clusters of spacecraft. The Air Force Research Laboratory initiated the TechSat 21 mission to demonstrate the key enabling technologies of formation flying and distributed radar. Princeton Satellite Systems developed the Formation Flying Module (FFM) for TechSat 21 to provide autonomous reconfiguration, formation keeping, and collision avoidance capabilities to the three-satellite cluster. The process of developing flight software for such a distributed system has brought to light significant design challenges. Examples include developing a clusterlevel fault management plan, designing an autonomous control system which respects the various constraints imposed by the spacecraft design, and defining a sensible ground command interface to the cluster. These challenges are likely to remain important issues for future missions, especially as the complexity and size of the cluster grows. This paper presents an overview of the FFM design along with the motivations and challenges associated with the design process.