The Synchronized Position Hold Engage Reorient Experimental Satellites (SPHERES) Program, at the MIT Space Systems Laboratory, provides research scientists with a facility to incrementally and iteratively mature estimation, control, autonomy, and artificial intelligence algorithms to advance the field of Distributed Satellite Systems. Operations aboard the ISS began in May 2006, with a total of five sessions completed by the end of 2006. These sessions achieved a wide range of successes including the demonstration of both formation flight and autonomous docking algorithms. The docking algorithms were developed incrementally throughout the five tests sessions, making heavy use of the reconfiguration and modularity features of the SPHERES design. The architecture for the docking algorithms is based on the development of smaller simple modules that implement: two estimation algorithms based on extended Kalman filters; mixer functions to convert forces and torques to thruster on/off commands; glideslope, phase-plane, and PID-type controllers; and fault detection and isolation algorithms. The modules were tested piecewise and assembled together to create increasingly complex docking maneuvers. The tests culminated with the successful demonstration of two SPHERES satellites performing cooperative docking to fixed targets, demonstrating the capabilities of safe docking maneuvers, and performing the first microgravity docking to a tumbling target.