The complexity of modern robotic workcells, consisting of many cooperating elements (e.g., robots, sensing systems) makes programming applications enormously difficult. Even when the application can be easily decomposed into workcelll operations, the tight coupling among these operations due to constraints on precedence and resource sharing makes it difficult to identify and take advantage of possible concurrency. Since robotic workcells are typically configured to repetitively perform an application, we seek to minimize the ‘cycle’ time required, by optimizing the order in which operations take place. Eventually, a sequential program must be written for each workcell element, and they must then execute concurrently. Commercial robot languages and systems provide neither the necessary tools for programming such a distributed collection of elements nor a mechanism for inter‐element communication. In this article the authors propose a two‐part solution to this workcell programming problem: SAGE/WRAP. A graphics interface is provided to the user in order to define the application. Then, from the user's input, SAGE builds a Petri Net description of the workcell application; this is used to obtain a time‐optimal sequence of operations for each workcell element. The time‐optimal sequence then becomes the basis of the runtime program that performs the application. This program is interpreted and executed by the hierarchical workcell runtime environment called WRAP. An example is provided to illustrate the approach.