This article describes an abstract framework for itinerant agents that can be used to implement secure, remote applications in large, public networks such as the Internet or the IBM Global Network. Itinerant agents are programs, dispatched from a source computer, that roam among a set of networked servers until they accomplish their task. This is an extension to the client/server model in which the client sends a portion of itself to the server for execution. An additional feature of itinerant agents is their ability to migrate from server to server, perhaps seeking one that can help with the user's task or perhaps collecting information from all of them. A major focus of this article is the Agent Meeting Point, an abstraction that supports the interaction of agents with each other and server based resources. Why is this extended form of client/server computing desirable or valuable? There are many detailed motivations for using itinerant agents [6]. They fall broadly into two categories: 1) support for mobile computers or lightweight devices and 2) the emerging need in rapidly evolving networks for an asynchronous method of searching for information or transaction services. For example: The reduction of overall communication traffic over the low bandwidth, high latency, high cost access networks typically employed by mobile computers. The ability of the agent to engage in high bandwidth communication (with a server, for example) to search through large, free text data bases. The ability of lightweight mobile computers to interact with heavyweight applications without prior detailed knowledge of the remote server's capabilities. The ability of the agent to integrate knowledge from the client and server and perform inferencing at the server. The ability of the user to create ''personalized services'' by customizing agents that take up residence at a server. These claimed advantages are, at present, hypothetical, and we are performing experiments to determine if they can be realized. We believe they merit initial exploration. Public networks already contain an enormous number of computers capable of providing specific services. This number will continue to grow. These servers employ a wide variety of processors, operating systems, data bases, application frameworks, and applications. An itinerant agent framework enables these numerous, heterogeneous servers to offer many advantages. These include a host-independent execution environment for itinerant agent programs, standard communication languages with which agents and servers can engage in dialogues, a method of employing public security services to enable authenticated access to server resources, and secure auditing and error recovery mechanisms.' This article is structured as follows: it begins with an overview of the operation of an itinerant agent framework (first section) and a review of previous work (second section). In the third section we consider likely applications of itinerant agents and discuss one specific example in detail. The fourth section is an architectural description of the structure of itinerant agents, the languages employed to create them, and the execution environments required at the servers. In the fifth section we give a detailed description of how an itinerant agent is processed at a server. The sixth section discusses security issues, always important in network services and especially so in this case. Finally, in the seventh section, we describe the technical advantages of the itinerant agent framework and the services it enables.