Many organizations, including the National Aeronautics and Space Administration (NASA) and the US Department of Defense, want to use constellations or fleets of autonomous spacecraft working together to accomplish complex mission objectives. At the Air Force Research Laboratory's Space Vehicles Directorate, we are developing architectures for commanding and controlling a cluster of cooperating satellites through autonomous software development for the TechSat 21 program. Large clusters of satellites flying in formation must have some level of onboard autonomy in order to: fly within specified tolerance levels; avoid collisions; address fault detection, isolation, and resolution (FDIR); share knowledge; and plan and schedule activities. Commanding and controlling a large cluster of satellites can be very burdensome for ground operators as well. The article describes efforts to address these issues through the technology development for TechSat 21.