Conventional expert system shells do not help in developing AI (artificial intelligence) programs for large applications like automated factories, which require multidisciplinary knowledge and which are geographically distributed. To support these applications, a shell must provide tools for a knowledge-based system to (1) reason about the need for cooperation, (2) understand global knowledge in order to locate relevant expert systems, and (3) select appropriate cooperation plans. Coop, which supports cooperation models for characterizing the three essential decisons in the cooperation process, is described. It provides a computational method for deciding whether an expert system has enough knowledge to solve a given problem or whether it needs to consult with other expert systems. A 'yellow pages' technique is provided to represent global knowledge and to select appropriate cooperation plans. The Coop environment lets expert systems autonomously resolve the three fundamental decisions in cooperation at runtime, in contrast with contemporary approaches where the decisions are made at design time by the programmers. The Coop environment also provides tools for resolving distributed computing issues of initiating and controlling process groups on a network, monitoring the state of distributed computation, and support tools needed to implement a large AI program consisting of multiple knowledge bases and expert system processes.