With the emergence of component-based technologies, there is a push toward software reuse. Reusable software components, such as Java Beans, ActiveX components, COM objects, registry services, etc., can be used to support a wide variety of distributed services. The reuse of such components has reduced the need for full lifecycle development and deployment, both in research and industry. Such “top-down” approaches are becoming impractical, while there is the increasing trend toward integrating reusable components from bottom up. Furthermore, the use of technologies like introspection and reflection has relinquished the design-time constraint of having source code in order to integrate such components. The implications of the aforementioned technologies suggest that future development processes will reside on the end-user’s workstation. Consequently, end-users will produce their own systems as a product of configuring multiple 3rd party components (i.e. software “plug-and-play” (Bronsard, et al., 1997)). With this in mind, the remaining problem is how to automate this configuration to respect some user-determined policy of interaction. One such policy is the implementation of workflow. This paper describes a specification-driven approach, WARP, to configuring components according to workflow. This approach entails a process and an agent-based architecture and implementation that supports the “bottom-up” configuration and reconfiguration of reusable component-based distributed services.