This paper proposes a model along with a reference software architecture enabling multi-coordination between distributed and mobile software agents. Multi-coordination allows agents to choose among a variety of different coordination spaces and patterns which best fit their dynamic communication and synchronization needs. It can be fruitfully exploited by agents in heterogeneous and dynamic environments like the Internet where the mutable conditions of communications and computing usually affect both the currently agreed workflow and the performances of agent-based applications. The proposed model centers on high-level events which can be locally emitted and/or received by agents and which unify access to and exploitation of underlying coordination spaces and agent server resources. The model is supported by a component-based architecture which provides agent management and notably agent coordination through a coordination context dynamically assembled with a set of different local and/or global coordination spaces. A prototypical implementation of the architecture was also carried out using Java and the Voyager ORB middlewares.