This paper focus almost entirely on mobile agent systems. Several systems are overviewed and some principles on what a mobile agent system should implement are identified. For each system overviewed, we focus on its execution and architectural concepts and on its implementation. The first section motivates the rest of the work; it describes why mobile agents are useful, their advantages and disadvantages, as well as some of their applications. The following sections describe agent systems, accordingly to three categories: weak migration mobile agent systems, strong migration mobile agent systems, and other relevant agent systems. The last category includes systems that do not emphasize their research work on mobile agents, but do have some characteristics that make them relevant.