Abstract. We consider the programming of multiagent systems from an architectural perspective. Our perspective emphasizes the autonomy and heterogeneity of agents, the components of multiagent systems, and focuses on how to specify their interconnections in terms of high-level protocols. In this manner, we show how to treat the programming of a multiagent system as an architectural endeavor, leaving aside the programming of individual agents who might feature in a multiagent system as a secondary concern.