Distributed Artificial Intelligence (DAI) is a subfield of AI concerned with the problems of describing and constructing multiple intelligent systems which interact. MACE (for Multi-Agent Computing Environment) is a language, programming environment, and testbed for DAI systems. Parallelism in AI problem-solving applications can be exploited at many different levels: in hardware, in the implementation language (e.g., a production system language), in a problem-solving paradigm, or directly in the application. MACE is an instrumented testbed for building a wide range of experimental Distributed Artificial Intelligence systems. The goal of MACE is to support experimentation with different styles of distributed AI systems, at different levels of complexity. The dominant metaphor of MACE is a collection of intelligent, semi-autonomous agents interacting in organized ways. MACE is a distributed, object-oriented system. MACE computational units (called agents) run in parallel, and communicate via messages. They provide optional facilities for knowledge representation (world knowledge, models of other agents, their goals and plans, their roles and capabilities, etc.) and reasoning capabilities. The MACE environment maps agents onto processors, handles inter-agent communication, and provides several features: A collection of agents. Agents are the basic computational units of the MACE system. Rather than being simple generic object structures, MACE agents are inherently “social” in nature: they know about some other agents in their environment, and expect to draw upon and coordinate with the expertise of others they know about. MACE agents represent this information in the form of models of other agents in the world in a special database called acquaintances , which is a property of each MACE agent. Current agent models are predicate-calculus based. MACE agents may be composed into sub-units or coalitions; they respond as organized groups or composites. The MACE Agent Description Language includes facilities for describing organized clusters of agents. A community of system agents. A number of pre-defined system agents provide MACE command interpretation, a standard user interface, the agent-builder cluster, error handling, tracing, execution monitoring, etc. Specific MACE agents serve as interactive tools for building and executing MACE programs. A collection of facilities which all agents may use, including a pattern matcher, a simulator, several standard agent engines, handlers for standard errors, and standard messages understood by all agents. MACE incorporates extensive pattern-matching facilities for interpreting messages, for pattern-directed invocation of asynchronous events (e.g., demons and other event-monitors), and for associative database access within agents. Instrumentation. The MACE testbed is instrumented to allow for measurements of the characteristics of problem-solvers during experimental runs. Message traffic, queue and database sizes, work done by an agent (in terms of elapsed real time or number of invocations), and load on a processor node are common measurements. A description database. Agent descriptions are maintained in a description database by a system-agent cluster which constructs new descriptions, verifies descriptions, and constructs executable agents from descriptions. MACE enforces a separation of description and execution to handle some problems of distribution of objects. A collection of kernels. MACE kernels collectively handle communication and message routing, perform I/O to terminals, files, or other devices, map agents onto processors, and schedule agents for execution. Reflection capabilities. A MACE agent's acquaintances database can include, of course, models of the behaviors, plans, roles, or implementation of the agent itself, providing high-level and behavioral reflection capabilities. An evolutionary philosophy. MACE agents are intended to be a high-level approach to distributed object-oriented programming. Since we are using MACE as a testbed to explore coordination strategies for intelligent multi-agent systems, the nature of generic MACE agents changes and specializes over time. All MACE agents now have acquaintance databases, react to certain specialized messages, and include particular attributes (e.g. the attribute “ME” which includes a partial self-description). Over time, as more coordination and modeling features are found useful, they will be standardized as features of MACE agents. In this way, MACE agents are explicitly evolving toward higher-level objects. MACE has been used to build numerous experimental DAI systems including models of lower-level parallelism (sets of distributed production rule systems without global database or inference engine, where each rule is an agent) and higher-level distributed problem-solving architectures (e.g., domain-independent distributed blackboard and contract-net schemes). MACE is implemented on a 16-node INTEL iPSC/1 large-memory hypercube and in a LISP machine environment, and will soon be available on the iPSC/2 and a Sun network.